2
我弄不明白,爲什麼我收到異常有關此行的方法:反射找不到這是實現
public void DoIt(object sender, MyEventArgs e) {
//... other stuff
Type type = sender.GetType();
if (type.GetMethod(e.ActionName, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance) == null)
throw new NotSupportedException("Method: " + e.ActionName + " not implemented");
type.InvokeMember(e.ActionName, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Instance, null, sender, e.Parameters.ToArray());
}
我仍然得到關於方法的錯誤沒有找到,但我確定這是因爲調用之前if語句中的條件爲false。
你試過調試過嗎?一種方法是設置一個'for'循環來迭代'GetMethods(bindingFlags)'返回的所有內容。 – dasblinkenlight 2012-04-22 11:47:24
什麼方法?它*絕對*非公開?一個簡短但完整的例子會有所幫助。另外,將'GetMethod'的返回值存儲到一個變量中並調用該變量會更明智,而不是使用'Type.InvokeMember'來重新找到該方法。 – 2012-04-22 11:53:35
是的,這絕對是私人的。關於GetMethod(..)。Invoke() - 我得到Access Exception(它是windows phone app) – TrN 2012-04-22 12:06:40