我可以嘗試使用func委託將消息發送到另一個類。我通常會與普通代表一起做這件事,但我正在嘗試學習如何使用Func做到這一點。用下面的例子,我想讓AClass用消息更新主類。正如你所看到的,我遇到了麻煩。使用Func代理在類之間發送消息
更新:我更新了示例以提供更好的細節。在這個例子中,我展示瞭如何使用委託來與主類進行通信。是否有可能使用func委託來做到這一點?
class Program
{
static void Main(string[] args)
{
AClass aClass = new AClass();
// old way
aClass.MessageEvent += new AClass.MessageEventHandler(ProcessMessage);
aClass.MessageSender(50);
// new way
Func<int, String> fDelegate = aClass.MessageSender;
Console.WriteLine(fDelegate(10));
Console.ReadLine();
}
public static void ProcessMessage(String mess) {
Console.WriteLine("Process message here: " + mess);
}
}
class AClass {
public event MessageEventHandler MessageEvent;
public delegate void MessageEventHandler(String value);
public AClass() {
}
public String MessageSender(int i) {
InvokeMessage("Message: " + i);
return "Message: " + i;
}
public void InvokeMessage(String mess) {
this.MessageEvent("Message sent via delegate: " + mess);
}
}
輸出:
Process message here: Message sent via delegate: Message: 50
Process message here: Message sent via delegate: Message: 10
Message: 10
任何建議表示讚賞。 thx
你需要什麼建議?我可以告訴你,你不需要委託將消息發送到另一個類。只需在其他課程上調用一個方法即可。或者我可以告訴你,Func代表沒有什麼特別之處。這只是一個代表。 –
目前尚不清楚你正在嘗試做什麼。告訴我們你認爲應該發生什麼以及以何種順序應該調用各種InvokeMessage,ProcessMessage以及由誰發出 – xanatos
你可以向你展示如何使用「普通」代表來完成它嗎? –