簡體   English   中英

如何從方法名稱創建 PropertyChangedEventHandler

[英]How to create PropertyChangedEventHandler from method name

我是 OO 編程和 C# 的新手,我需要一些幫助。

我有幾個方法可以在類成員的 PropertyChanged 事件上調用。 該類的集合是基於來自文本文件的數據創建的

我希望要調用的方法也像任何其他數據一樣從文本文件中讀取(然后作為字符串)。

我如何實例化事件處理程序並注冊到該事件而不將方法作為參數,而是將方法名稱作為參數,例如:

var handler = new PropertyChangedEventHandler(MyHandler)
myData.PropertyChanged += (PropertyChangedEventHandler)handler;

我想實現以下目標:

string str = "MyHandler";
var handler = new PropertyChangedEventHandler(str)
myData.PropertyChanged += (PropertyChangedEventHandler)str;`

我知道這行不通,但我不知道去哪里尋找解決方案。

謝謝。

您可以嘗試使用反射來查找方法並將其動態分配給委托,例如:

public void AssignPropertyChangedMethod(string methodName)
{
    var methodInfo = this.GetType().GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
    var handler = Delegate.CreateDelegate(typeof(PropertyChangedEventHandler), this, methodInfo);
    myData.PropertyChanged += (PropertyChangedEventHandler)handler;
}

我自己還沒有測試過,所以我不確定它會起作用,但也許它會讓你朝着正確的方向前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM