我正在使用反射创建对象的实例并获取对象类中的方法,但是当我必须使用类型为Type
的数组来避免歧义问题时问题就出现了,这是我试图达到的代码示例。
public class BigClass
{
public void getSomething(XmlDocument doc, ref CustomObject obj) {...}
public void getSomething(XmlDocument doc, ref CustomObject obj, string id) {...}
}
此代码来自外部程序集(file.dll),我使用下一个代码。
Assembly a = Assembly.LoadFrom("file.dll");
Type s = a.GetType("FileNamespace.BigClass");
MethodInfo inf = s.GetMethod("getSomething", new [] {typeof(XmlDocument), typeof(CustomObject), typeof(string)});
获取使用3个参数的对象的MethodInfo
,但变量" inf"我认为因为它没有找到使用" ref"的参数的方法。
有没有办法解决这个问题?
答案 0 :(得分:5)
您需要查找ref类型才能获取MethodInfo。
MethodInfo inf = s.GetMethod("getSomething", new [] {typeof(XmlDocument), typeof(CustomObject).MakeByRefType(), typeof(string)});