我該如何在下面的代碼中使用反射來調用“MyMethod”。我有一個現有的 C# 代碼,它具有預定義的結構,我不允許更改。我需要使用反射調用類中存在的方法。在下面的代碼中,“_instance”包含“Foo”對象。我需要在 Consumer 類中使用“PropElementHighlighter”屬性調用“MyMethod”。使用系統反射; public class Foo { public void MyMethod(string Argument) { //some code } } public class MainWindow { private Foo _instance; public Foo PropElementHighlighter { get { return _instance; } } } public class Consumer { Type control = MainWindow.GetType(); PropertyInfo l_propInfo = control.GetProperty("PropElementHighlighter", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); MethodInfo l_HighlightMethodInfo = l_propInfo.PropertyType.GetMethod("MyMethod"); l_HighlightMethodInfo.Invoke(l_propInfo, new object[]{"Parameter1"}); }我收到錯誤“對象與目標類型不匹配”。調用方法時。
1 回答

素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
您收到錯誤是因為您正在方法的對象中設置屬性信息。嘗試設置屬性值:
Type control = mainWindow.GetType();
PropertyInfo l_propInfo = control.GetProperty("PropElementHighlighter", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
var propertyValue = l_propInfo.GetValue(mainWindow);
MethodInfo l_HighlightMethodInfo = l_propInfo.PropertyType.GetMethod("MyMethod");
l_HighlightMethodInfo.Invoke(propertyValue, new object[] { "Parameter1" });
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消