2
我試圖使用Type.InvokeMember(String, BindingFlags, Binder, Object, array [])與默認聯編程序。Type.InvokeMember和參考類型
對象數組中的目標方法的參數之一是引用類型設置爲null。我想要調用的方法實例化引用類型,以便我可以繼續使用它。例如:
using System;
namespace ConsoleApplication6
{
class A
{
public void GetReferenceType(object o)
{
o = new object();
}
}
class Program
{
static void Main(string[] args)
{
object o = null;
A a = new A();
Type t = typeof(A);
t.InvokeMember("GetReferenceType", System.Reflection.BindingFlags.InvokeMethod, null, a, new object[] { o });
if (o == null)
{
throw new NullReferenceException();
}
else
{
//do something with o;
}
}
}
}
解決方法是給A
一個屬性並通過它訪問o。
有沒有另一種方法可以不改變A
?
我寧可不更改A(或它的方法getReferenceType)。任何其他方式? – 2010-07-19 12:12:21
@Matt:編號'A.GetReferenceType'是一個破碎的方法。這是一個無操作。它沒有任何用處。你真的需要明白這是爲什麼,以避免將來遇到類似的問題。 – 2010-07-19 12:16:07
感謝您的文章,我現在明白了。在閱讀之前,我從來沒有真正看到需要通過引用傳遞引用類型! – 2010-07-19 12:22:20