我一直在使用C#进行基本的控制容器反转。我保持尽可能简单,使用Dictionary来存储已注册的类型。但是,当我尝试编写Resolve函数时,出现编译错误。
private object RecursiveResolve<I>()
{
// Find out what parameters we need for the object
ConstructorInfo typeConstructor = typeof(I).GetConstructors().First<ConstructorInfo>();
ParameterInfo[] typeParameters = typeConstructor.GetParameters();
List<object> resolvedParameters = new List<object>();
// Iterate through parameters
foreach (ParameterInfo parameter in typeParameters)
{
Type parType = parameter.ParameterType;
object resolvedParameter = RecursiveResolve<parType>(); // Compiler error here
resolvedParameters.Add(resolvedParameters);
}
return typeConstructor.Invoke(resolvedParameters.ToArray());
}
编译错误是:
The type or namespace name parType could not be found (are you missing a using directive or an assembly reference)
我当前对错误的看法是RecursiveResolve在&lt;&gt;中需要一个已定义的类型名称,而不是一个变量,即使该变量是一个Type对象。但是,我不太确定解决方案是什么。
我需要更改什么来保持parType,以便我可以动态浏览对象的参数并解决它们?