/// <summary> /// 添加 <typeparamref name="TSeeder"/>。 /// </summary> /// <typeparam name="TSeeder">指定的种子机类型。</typeparam> /// <param name="builder">给定的 <see cref="DataExtensionBuilder"/>。</param> /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns> public static DataExtensionBuilder AddSeeder <TSeeder>(this DataExtensionBuilder builder) where TSeeder : class, IAccessorSeeder { builder.TryAddOrReplaceService <IAccessorSeeder, TSeeder>(); return(builder); }
/// <summary> /// 添加 <see cref="IAccessorInitializer"/>(支持多次添加)。 /// </summary> /// <typeparam name="TInitializer">指定的初始化器类型。</typeparam> /// <param name="builder">给定的 <see cref="DataExtensionBuilder"/>。</param> /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns> public static DataExtensionBuilder AddInitializer <TInitializer>(this DataExtensionBuilder builder) where TInitializer : class, IAccessorInitializer { builder.TryAddEnumerableServices <IAccessorInitializer, TInitializer>(); return(builder); }
private static DataExtensionBuilder AddAccessing(this DataExtensionBuilder builder) { builder.TryAddOrReplaceService <IAccessorManager, InternalAccessorManager>(); builder.TryAddOrReplaceService <IAccessorMigrator, InternalAccessorMigrator>(); builder.TryAddOrReplaceService <IAccessorResolver, InternalAccessorResolver>(); return(builder); }
static DataExtensionBuilderHelper() { if (_builder is null) { var services = new ServiceCollection(); _builder = services.AddLibrameCore().AddData(); } if (_services is null) { _services = _builder.Services.BuildServiceProvider(); } }
/// <summary> /// 注册 Librame 数据扩展构建器。 /// </summary> /// <param name="parentBuilder">给定的 <see cref="IExtensionBuilder"/>。</param> /// <param name="setupOptions">给定可用于设置 <see cref="DataExtensionOptions"/> 选项的动作(可选;为空则不设置)。</param> /// <param name="configuration">给定可用于 <see cref="DataExtensionOptions"/> 选项的配置对象(可选;为空则不配置)。</param> /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns> public static DataExtensionBuilder AddData(this IExtensionBuilder parentBuilder, Action <DataExtensionOptions>?setupOptions = null, IConfiguration?configuration = null) { // 配置扩展选项 parentBuilder.ConfigureExtensionOptions(setupOptions, configuration); var builder = new DataExtensionBuilder(parentBuilder); builder .AddAccessing() .AddAuditing() .AddIdentification() .AddSharding() .AddStoring() .AddValueConversion(); return(builder); }
private static DataExtensionBuilder AddValueConversion(this DataExtensionBuilder builder) { builder.TryAddOrReplaceService <IEncryptionConverterFactory, InternalEncryptionConverterFactory>(); return(builder); }
private static DataExtensionBuilder AddStoring(this DataExtensionBuilder builder) { builder.TryAddOrReplaceService(typeof(IStore <>), typeof(BaseStore <>)); return(builder); }
private static DataExtensionBuilder AddSharding(this DataExtensionBuilder builder) { builder.TryAddOrReplaceService <IShardingManager, InternalShardingManager>(); return(builder); }
private static DataExtensionBuilder AddIdentification(this DataExtensionBuilder builder) { builder.TryAddOrReplaceService <IIdGeneratorFactory, InternalIdGeneratorFactory>(); return(builder); }
public InternalAccessorResolver(DataExtensionBuilder builder, IServiceProvider provider) { _builder = builder; _provider = provider; }