正确使用反射和有约束力的标志
问题描述:
我想修改下面的代码,以便能够使用一个专用的方法正确使用反射和有约束力的标志
//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。
谢谢!
答
您想使用this overload的Type.GetMethod()
,这是您传递绑定标志的地方。默认.GetMethod(string)
只查找公共方法,所以它返回null,因此您的空引用异常。
你的代码应该是更象:
var method =
typeof(MemberDataFactory)
.GetMethod("LoadData", BindingFlags.Instance | BindingFlags.NonPublic) // binding flags go here
...
你所说的“没有运气”的意思是?你有例外吗?或代码没有编译? –
你会得到什么错误? – Yaur
'var'是隐式输入,但它是完全静态的,不是动态的。请参阅http://msdn.microsoft.com/en-us/library/bb383973.aspx(对比动态http://msdn.microsoft.com/en-us/library/dd264741.aspx) –