Example #1
0
        /// <summary>
        /// 动态创建对象, 并注入字段和属性
        /// </summary>
        /// <param name="provider">服务提供程序</param>
        /// <param name="instanceType">待创建的对象类型</param>
        /// <param name="parameters">额外构造参数</param>
        /// <returns></returns>
        public static object CreateInstance(this IServiceProvider provider, Type instanceType, params object[] parameters)
        {
            var obj = ActivatorUtilities.CreateInstance(provider, instanceType, parameters);

            if (obj != null)
            {
                provider.Autowired(obj);
            }
            return(obj);
        }
Example #2
0
        /// <summary>
        /// 从服务中获取对象或动态创建对象, 并注入字段和属性
        /// </summary>
        /// <param name="serviceProvider">服务提供程序</param>
        /// <param name="type">待获取或创建的对象类型</param>
        /// <returns></returns>
        public static object GetServiceOrCreateInstance(this IServiceProvider serviceProvider, Type type)
        {
            if (serviceProvider == null)
            {
                return(Activator.CreateInstance(type));
            }

            var obj = ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider, type);

            if (obj != null)
            {
                serviceProvider.Autowired(obj);
            }
            return(obj);
        }