/// <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>();
    }
Exemplo n.º 2
0
    /// <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>();
    }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
    /// <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();
Exemplo n.º 6
0
 /// <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);
Exemplo n.º 7
0
 /// <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);
Exemplo n.º 8
0
 /// <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);
Exemplo n.º 9
0
        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));
        }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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));
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }