我可以尝试使用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
你可以向你展示如何使用“普通”代表来完成它吗? –