【发布时间】:2011-04-08 21:24:27
【问题描述】:
我想为类库中的对象提供“输出”消息的能力,而不用担心它是如何输出的。类库可用于控制台应用程序、WinForm 或 WPF Windows 应用程序或网页。
我最初决定使用委托来处理这个问题。我使用类实现了这一点,但是当我尝试将委托放入每个这些对象所固有的接口时,编译器不喜欢委托。
我发现我可以将代理移出界面,然后能够编译,但我不确定这是否完成了我想要做的事情。它也看起来像一个杂物,所以我想问一下你们中的任何人都有不同的想法来实现这一点……
界面:
namespace Test
{
using System;
using System.Xml.Linq;
public interface IAction
{
DisplayMessageDelegate DisplayMessage(string message);
void Execute();
XElement Serialize(XName elementName);
}
public delegate void DisplayMessageDelegate(string message);
}
从那里,我不确定如何实现这种行为:(顺便说一句,我知道这段代码不会编译......)
public class ActionClass1 : IAction
{
// Other methods not shown...
void Execute()
{
if (this.DisplayMessage != null)
{
this.DisplayMessage(“Hello”);
}
}
}
public class ConsoleClass
{
ActionClass1 class1 = new ActionClass1();
class1.DisplayMessage = { x => Console.WriteLine(x); };
}
public class WinFormClass
{
ActionClass1 class1 = new ActionClass1();
Class1.DisplayMessage = {x => DisplayTextBox.Text = x; };
}
【问题讨论】:
标签: c# events lambda delegates