0 c# generics reflection ambiguity
我有一个包含类的程序集.那个班有两种方法
public IEnumerable Invoke();
public IEnumerable<T> Invoke<T>();
Run Code Online (Sandbox Code Playgroud)
我动态加载程序集
Assembly as = Assembly.Load("MyAssemblyName, Version= 6.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
Type type = as.GetType("MyClass");
object myObject= Activator.CreateInstance(type);
IEnumerable test= (IEnumerable)myObject.GetType().InvokeMember("Invoke", BindingFlags.InvokeMethod, null, myObject, null);
Run Code Online (Sandbox Code Playgroud)
我希望这个方法被调用:public IEnumerable Invoke();
当我运行该程序时,我收到一个错误:找到了模糊的匹配
那么需要做些什么才能消除歧义,所以要调用非泛型方法?
提前致谢.
你可以通过调用找到方法GetMethods,check ContainsGenericParameters是false.您也可以选择将参数计数检查为零.
var method = yourType.GetMethods()
.Where(x => x.Name == "Invoke")
.First(x => !x.ContainsGenericParameters);
method.Invoke(myObject, null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1008 次 |
| 最近记录: |