/// <summary> /// /// </summary> public object GetInstance() { var constructors = RealType.GetConstructors(); var parasInfos = constructors[0].GetParameters(); var paras = new List <object>(); foreach (var parasInfo in parasInfos) { var obj = GetParameterInstance(parasInfo.ParameterType); paras.Add(obj); } return(constructors[0].Invoke(paras.ToArray())); }
public object GetInstance() { //取得Type的构造函数, 这里为了简便,默认使用最后一个,实际的Autofac默认会使用参数最长的一个 var constructors = RealType.GetConstructors(); var paramsInfos = constructors[constructors.Length - 1].GetParameters(); List <object> objParams = new List <object>(); foreach (var parameterInfo in paramsInfos) { var tempPara = GetParameterInstance(parameterInfo.ParameterType); objParams.Add(tempPara); } //调用构造函数构造对象 return(constructors[0].Invoke(objParams.ToArray())); }
public object GetInstance() { //取得Type的构造函数, 这里为了简便,默认使用最后一个,实际的Autofac默认会使用参数最长的一个 var constructors = RealType.GetConstructors(); var paramsInfos = constructors[constructors.Length - 1].GetParameters(); //准备构造函数的参数 var @params = new List <object>(); foreach (var parameterInfo in paramsInfos) { //根据类型,取的参数的实例。本人注:这里根据type自动匹配注册的类型,然后利用委托循环调用,类似递归 var tempPara = GetParameterInstance(parameterInfo.ParameterType); @params.Add(tempPara); } //调用构造函数构造对象 return(constructors[0].Invoke(@params.ToArray())); }