我想在類庫中提供對象「輸出」消息的能力,而不用擔心它如何輸出。類庫可用於控制檯應用程序,WinForm或WPF窗口應用程序或網頁。使用什麼?代表,事件或Func <T>?
我最初決定使用委託來處理這個問題。我使用類實現了這一點,但是當我試圖將委託放入每個這些對象所固有的接口時,編譯器不喜歡委託。
我發現我可以將委託移出界面,然後能夠編譯,但我不確定這會完成我想要做的事情。它也看起來像一個雜湊,所以我想問如果你們任何人有不同的想法來完成這個...
接口:
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; };
}
應該提到的是,如果你需要比params更復雜的任何東西,ref/out ... Action/Func不會工作。另外一個'精緻'是你可以正確命名參數(智能感知)。這是說我也會使用行動。 –
Jake
2011-04-08 21:42:56