正确使用反射和有约束力的标志

问题描述:

我想修改下面的代码,以便能够使用一个专用的方法正确使用反射和有约束力的标志

 //use reflection to Load the data 
    var method = 
        typeof(MemberDataFactory) 
        .GetMethod("LoadData") 
        .MakeGenericMethod(new [] { data.GetType() }) 
        .Invoke(this, null); 

我用尽,没有运气以下:

 //use reflection to Load the data 
    var method = 
        typeof(MemberDataFactory) 
        .GetMethod("LoadData") 
        .MakeGenericMethod(new [] { data.GetType() }) 
        .Invoke(this, BindingFlags.Instance | BindingFlags.NonPublic, null , null, null); 

而且什么这个代码中的“var”?编号倾向于指定它的类型,而不是使用var。

谢谢!

+1

你所说的“没有运气”的意思是?你有例外吗?或代码没有编译? –

+0

你会得到什么错误? – Yaur

+1

'var'是隐式输入,但它是完全静态的,不是动态的。请参阅http://msdn.microsoft.com/en-us/library/bb383973.aspx(对比动态http://msdn.microsoft.com/en-us/library/dd264741.aspx) –

您想使用this overloadType.GetMethod(),这是您传递绑定标志的地方。默认.GetMethod(string)只查找公共方法,所以它返回null,因此您的空引用异常。

你的代码应该是更象:

var method = 
     typeof(MemberDataFactory) 
     .GetMethod("LoadData", BindingFlags.Instance | BindingFlags.NonPublic) // binding flags go here 
     ...