/// <summary> /// 构造一个 <see cref="DrawingExtensionBuilder"/>。 /// </summary> /// <exception cref="ArgumentNullException"> /// <paramref name="parentBuilder"/> 为空。 /// </exception> /// <param name="parentBuilder">给定的父级 <see cref="IExtensionBuilder"/>。</param> public DrawingExtensionBuilder(IExtensionBuilder parentBuilder) : base(parentBuilder) { // Drawers ServiceCharacteristics.AddSingleton <ISavingDrawer>(); ServiceCharacteristics.AddSingleton <IScalingDrawer>(); ServiceCharacteristics.AddSingleton <IWatermarkDrawer>(); // Verification ServiceCharacteristics.AddScope <ICaptchaGenerator>(); }
/// <summary> /// 构造一个 <see cref="CoreExtensionBuilder"/>。 /// </summary> /// <exception cref="ArgumentNullException"> /// <paramref name="services"/> 为空。 /// </exception> /// <param name="services">给定的 <see cref="IServiceCollection"/>。</param> public CoreExtensionBuilder(IServiceCollection services) : base(services) { // Cryptography ServiceCharacteristics.AddSingleton <IAlgorithmParameterGenerator>(); ServiceCharacteristics.AddSingleton <IAsymmetricAlgorithm>(); ServiceCharacteristics.AddSingleton <ISymmetricAlgorithm>(); // Plugins ServiceCharacteristics.AddSingleton <IPluginResolver>(); // Storage ServiceCharacteristics.AddSingleton <IStorableFileManager>(); ServiceCharacteristics.AddSingleton <IWebFilePermission>(); ServiceCharacteristics.AddSingleton <IWebStorableFileTransfer>(); }
private static void AddDotNettyServiceCharacteristics() { NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IBootstrapWrapperFactory>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IBootstrapWrapper>(ServiceCharacteristics.Transient()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IServerBootstrapWrapper>(ServiceCharacteristics.Transient()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd(typeof(IBootstrapWrapper <,>), ServiceCharacteristics.Transient()); // Demo NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IDiscardClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IDiscardServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IEchoClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IEchoServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IFactorialClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IFactorialServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IHttpServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IQuoteOfTheMomentClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IQuoteOfTheMomentServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <ISecureChatClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <ISecureChatServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <ITelnetClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <ITelnetServer>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IWebSocketClient>(ServiceCharacteristics.Singleton()); NetworkBuilderServiceCharacteristicsRegistration.Register .TryAdd <IWebSocketServer>(ServiceCharacteristics.Singleton()); }
/// <summary> /// 构造一个 <see cref="DataExtensionBuilder"/>。 /// </summary> /// <exception cref="ArgumentNullException"> /// <paramref name="parentBuilder"/> 为空。 /// </exception> /// <param name="parentBuilder">给定的父级 <see cref="IExtensionBuilder"/>。</param> public DataExtensionBuilder(IExtensionBuilder parentBuilder) : base(parentBuilder) { ServiceCharacteristics.AddSingleton <IIdGeneratorFactory>(); ServiceCharacteristics.AddSingleton <IAuditingManager>(); // Accessing ServiceCharacteristics.AddScope <IAccessorManager>(); ServiceCharacteristics.AddScope <IAccessorMigrator>(); ServiceCharacteristics.AddScope <IAccessorResolver>(); ServiceCharacteristics.AddScope <IAccessorSeeder>(addImplementationType: true); ServiceCharacteristics.AddScope <IAccessorInitializer>(); // Sharding ServiceCharacteristics.AddSingleton <IShardingManager>(); // Storing ServiceCharacteristics.AddScope(typeof(IStore <>)); // ValueConversion ServiceCharacteristics.AddSingleton <IEncryptionConverterFactory>(); }
/// <summary> /// 获取指定服务类型的特征。 /// </summary> /// <param name="serviceType">给定的服务类型。</param> /// <returns>默认返回 <see cref="ServiceCharacteristics.Singleton(bool)"/>。</returns> public override ServiceCharacteristics GetServiceCharacteristics(Type serviceType) => ServiceCharacteristics.Singleton();
/// <summary> /// 尝试获取指定服务的特征。 /// </summary> /// <typeparam name="TService">指定的服务类型。</typeparam> /// <param name="register">给定的 <see cref="IServiceCharacteristicsRegister"/>。</param> /// <param name="result">输出 <see cref="ServiceCharacteristics"/>(如果服务类型的特征不存在,则默认为 <see cref="ServiceCharacteristics.Singleton(bool)"/>)。</param> /// <returns>返回布尔值。</returns> public static bool TryGet <TService>(this IServiceCharacteristicsRegister register, out ServiceCharacteristics result) => register.NotNull(nameof(register)).TryGet(typeof(TService), out result);
/// <summary> /// 尝试添加指定服务的特征。 /// </summary> /// <typeparam name="TService">指定的服务类型。</typeparam> /// <param name="register">给定的 <see cref="IServiceCharacteristicsRegister"/>。</param> /// <param name="characteristics">给定的 <see cref="ServiceCharacteristics"/>。</param> /// <returns>返回布尔值。</returns> public static bool TryAdd <TService>(this IServiceCharacteristicsRegister register, ServiceCharacteristics characteristics) => register.NotNull(nameof(register)).TryAdd(typeof(TService), characteristics);
/// <summary> /// 添加或设置指定服务的特征。 /// </summary> /// <typeparam name="TService">指定的服务类型。</typeparam> /// <param name="register">给定的 <see cref="IServiceCharacteristicsRegister"/>。</param> /// <param name="characteristics">给定的 <see cref="ServiceCharacteristics"/>。</param> /// <returns>返回 <see cref="ServiceCharacteristics"/>。</returns> public static ServiceCharacteristics AddOrSet <TService>(this IServiceCharacteristicsRegister register, ServiceCharacteristics characteristics) => register.NotNull(nameof(register)).AddOrSet(typeof(TService), characteristics);
public static IServiceCollection AddByCharacteristics(this IServiceCollection services, Type serviceType, Type implementationType, ServiceCharacteristics characteristics) { services.NotNull(nameof(services)); var descriptor = new ServiceDescriptor(serviceType, implementationType, characteristics.Lifetime); return(services.AddByCharacteristics(descriptor, characteristics)); }
public static IServiceCollection AddByCharacteristics(this IServiceCollection services, Type serviceType, Func <IServiceProvider, object> factory, ServiceCharacteristics characteristics) { services.NotNull(nameof(services)); var descriptor = new ServiceDescriptor(serviceType, factory, characteristics.Lifetime); return(services.AddByCharacteristics(descriptor, characteristics)); }
public static IServiceCollection AddByCharacteristics <TImplementation>(this IServiceCollection services, Type serviceType, Func <IServiceProvider, TImplementation> factory, ServiceCharacteristics characteristics) where TImplementation : class { services.NotNull(nameof(services)); var descriptor = new ServiceDescriptor(serviceType, factory, characteristics.Lifetime); return(services.AddByCharacteristics(descriptor, characteristics)); }
private static IServiceCollection AddByCharacteristics(this IServiceCollection services, ServiceDescriptor descriptor, ServiceCharacteristics characteristics) { if (characteristics.TryAdd && services.Any(p => p.ServiceType == descriptor.ServiceType)) { return(services); } services.Add(descriptor); return(services); }
public static IServiceCollection AddByCharacteristics(this IServiceCollection services, Type serviceType, IEnumerable <Type> implementationTypes, ServiceCharacteristics characteristics) { services.NotNull(nameof(services)); foreach (var implType in implementationTypes) { var descriptor = new ServiceDescriptor(serviceType, implType, characteristics.Lifetime); services.AddByCharacteristics(descriptor, characteristics); } return(services); }