我想修改下面的代码,以便能够使用私有方法
//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。
谢谢!
答案 0 :(得分:3)
您想使用Type.GetMethod()
的{{3}},这是您传递绑定标记的位置。默认.GetMethod(string)
仅查找公共方法,因此它返回null,因此您的空引用异常。
您的代码应该更像是:
var method =
typeof(MemberDataFactory)
.GetMethod("LoadData", BindingFlags.Instance | BindingFlags.NonPublic) // binding flags go here
...