Пример #1
0
        private static void RegisterDefaultProviders(IServiceCollection services, DynamicDataConfiguration dynamicDataConfiguration)
        {
            services.AddSingleton <IPropertyDisplayMetadataProvider>(
                serviceProvider => new DataAnnotationsPropertyDisplayMetadataProvider()
                );

            services.AddSingleton <IEntityPropertyListProvider>(
                serviceProvider => new DefaultEntityPropertyListProvider(serviceProvider.GetService <IPropertyDisplayMetadataProvider>())
                );
        }
Пример #2
0
        /// <summary>
        /// Registers all services required by DotVVM Dynamic Data.
        /// </summary>
        public static IDotvvmServiceCollection AddDynamicData(this IDotvvmServiceCollection services, DynamicDataConfiguration dynamicDataConfiguration = null)
        {
            if (dynamicDataConfiguration == null)
            {
                dynamicDataConfiguration = new DynamicDataConfiguration();
            }

            // add the configuration of Dynamic Data to the service collection
            services.Services.AddSingleton(serviceProvider => dynamicDataConfiguration);

            RegisterDefaultProviders(services.Services, dynamicDataConfiguration);
            if (dynamicDataConfiguration.UseLocalizationResourceFiles)
            {
                RegisterResourceFileProviders(services.Services, dynamicDataConfiguration);
            }

            return(services);
        }
Пример #3
0
        private static void RegisterResourceFileProviders(IServiceCollection services, DynamicDataConfiguration dynamicDataConfiguration)
        {
            if (dynamicDataConfiguration.PropertyDisplayNamesResourceFile == null)
            {
                throw new ArgumentException($"The {nameof(DynamicDataConfiguration)} must specify the {nameof(DynamicDataConfiguration.PropertyDisplayNamesResourceFile)} resource class!");
            }
            if (dynamicDataConfiguration.ErrorMessagesResourceFile == null)
            {
                throw new ArgumentException($"The {nameof(DynamicDataConfiguration)} must specify the {nameof(DynamicDataConfiguration.ErrorMessagesResourceFile)} resource class!");
            }

            services.Decorate <IPropertyDisplayMetadataProvider>(
                baseService => new ResourcePropertyDisplayMetadataProvider(
                    dynamicDataConfiguration.PropertyDisplayNamesResourceFile, baseService)
                );

            services.Decorate <IViewModelValidationMetadataProvider>(
                (baseService, serviceProvider) => new ResourceViewModelValidationMetadataProvider(
                    dynamicDataConfiguration.ErrorMessagesResourceFile,
                    serviceProvider.GetService <IPropertyDisplayMetadataProvider>(),
                    baseService)
                );
        }