正确使用Reflection和绑定标志

时间:2012-09-01 17:46:11

标签: c# reflection bindingflags

我想修改下面的代码,以便能够使用私有方法

        //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 :(得分:3)

您想使用Type.GetMethod()的{​​{3}},这是您传递绑定标记的位置。默认.GetMethod(string)仅查找公共方法,因此它返回null,因此您的空引用异常。

您的代码应该更像是:

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