让我们考虑一个接口中的方法:
public Interface IA {
T[] Get<T>() where T : IB;
}
在另一个地方,我希望能够为n种已知的编译时类型调用此方法n次。以下代码说明了我的意图。
foreach(Type t in new Type[] { typeof(X), typeof(Y), typeof(Z) })
{
InterfaceXYZImplement[] arr = c.Resolve<IA>().Get<t>();
//...more here
}
现在,显然使用
foreach
循环会使类型变成运行时值,因此我必须使用MakeGenericMethod
。有没有一种方法可以编写代码,以便我可以针对
X
、Y
和Z
执行代码,但只调用一次编写的方法?将代码包装在方法中只会将问题向上移动(这是部分解决方案,但不是最终解决方案)。
MakeGenericMethod
有什么问题吗? - AakashMn
种类型,则必须发生 某些事情n
次,我不确定为什么您不希望该某些事情是一个方法调用。并且,如果您不想在传递给MakeGenericMethod
的方法名称上进行硬编码,可以尝试使用delegate
和Expression
进行操作。 - AakashM