我希望为类库中的对象提供“输出”消息的功能,而无需担心如何输出。该类库可用于控制台应用程序、WinForm或WPF窗口应用程序或Web页面。
起初我决定使用委托来处理此问题。我使用了类来实现它,但是当我尝试将委托放入每个对象都继承的接口时,编译器不喜欢这个委托。
后来我发现我可以将委托移出接口,然后就能编译了,但我不确定这是否实现了我想要做的事情。这似乎也有点笨拙,所以我想问问你们是否有不同的想法来实现这个功能...
接口:
起初我决定使用委托来处理此问题。我使用了类来实现它,但是当我尝试将委托放入每个对象都继承的接口时,编译器不喜欢这个委托。
后来我发现我可以将委托移出接口,然后就能编译了,但我不确定这是否实现了我想要做的事情。这似乎也有点笨拙,所以我想问问你们是否有不同的想法来实现这个功能...
接口:
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; };
}