コード例 #1
0
        /// <summary>
        /// 注册并使用自动构造
        /// </summary>
        /// <typeparam name="TService">基类型</typeparam>
        /// <returns>构造后的类型</returns>
        /// <remarks>
        /// 构造参数构造方式,
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. 其余全部通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// 公开属性构造方式
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. FromServicesAttribute通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// </remarks>
        public static IServiceCollection AddAutoTransient <TService>() where TService : class
        {
            var func = new DynamicCreateBuilder().AutoCreate <TService>();

            ServiceCollection.AddTransient(func);
            return(ServiceCollection);
        }
コード例 #2
0
        /// <summary>
        /// 注册并使用动态构造
        /// </summary>
        /// <typeparam name="TService">类型</typeparam>
        /// <returns>构造后的类型</returns>
        /// <remarks>
        /// 构造参数构造方式,
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. 其余全部通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// 公开属性构造方式
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. FromServicesAttribute通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// </remarks>
        public static IServiceCollection AddAutoSingleton <TService>() where TService : class
        {
            var func = new DynamicCreateBuilder().AutoCreate <TService>();

            ServiceCollection.AddSingleton(func);
            return(ServiceCollection);
        }
コード例 #3
0
        /// <summary>
        /// 注册并使用自动构造
        /// </summary>
        /// <typeparam name="TService">基类型</typeparam>
        /// <typeparam name="TImplementation">实际类型</typeparam>
        /// <returns>构造后的类型</returns>
        /// <remarks>
        /// 构造参数构造方式,
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. 其余全部通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// 公开属性构造方式
        /// 1. ILogger构造成ILogger&lt;T&gt;
        /// 2. FromConfigAttribute特性标识的构造成从配置文件读取的对象
        /// 3. FromServicesAttribute通过依赖构造(如果无法依赖构造或未注册的,后果未知)
        /// </remarks>
        public static IServiceCollection AddAutoScoped <TService, TImplementation>() where TService : class
            where TImplementation : class, TService
        {
            var func = new DynamicCreateBuilder().AutoCreate <TImplementation>();

            ServiceCollection.AddScoped <TService>(func);
            return(ServiceCollection);
        }