让我们考虑一个接口中的方法:
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
,但只调用一次编写的方法?
将代码包装在方法中只会将问题向上移动(这是部分解决方案,但不是最终解决方案,呵呵)。