【发布时间】:2013-07-12 22:22:04
【问题描述】:
我有一个注册接口的通用静态方法,我需要使用 c# 反射来编写它。
Services.AddService<ITBroker>(new TBrokerService());
我尝试了以下代码,但它不起作用
Type[] externTBrokerService = Assembly.LoadFrom("Business.dll").GetTypes();
Type[] externService = Assembly.LoadFrom("ServiceModel.dll").GetTypes();
Type iTBroker = externITBroker[12];
MethodInfo method = externService[1].GetMethods()[2];
//Gets Add Service method
MethodInfo generic = method.MakeGenericMethod(iTBroker);
//Make method generic
generic.Invoke(null,new object[] { externTBrokerService[0]});
//invoke the service
上面的代码给了我非常通用的参数异常。
上述代码反射的写法是什么?
【问题讨论】:
-
什么
externService?为什么你确定数组中的第三个方法是AddService<T>? -
有什么异常?
-
iTBroker的值是多少?这里的信息太少了。如果您可以编写一个简短但完整的程序来演示该问题,那将使生活变得更加清晰。 (并且您应该永远依赖于这样的方法或类型的顺序。) -
请注意,
externTBrokerService[0]是Type,而不是该类型的实例。 -
@JonSkeet:我已经编辑了代码并增加了 ITbroker 的价值。我会尝试写一些更有用的代码。
标签: c# generics reflection methods static