/// <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); }
/// <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); }