private static void RegisterDefaultProviders(IServiceCollection services, DynamicDataConfiguration dynamicDataConfiguration) { services.AddSingleton <IPropertyDisplayMetadataProvider>( serviceProvider => new DataAnnotationsPropertyDisplayMetadataProvider() ); services.AddSingleton <IEntityPropertyListProvider>( serviceProvider => new DefaultEntityPropertyListProvider(serviceProvider.GetService <IPropertyDisplayMetadataProvider>()) ); }
/// <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); }
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) ); }