【发布时间】:2012-10-02 09:23:30
【问题描述】:
嗨,如果比较,我已经筋疲力尽了。和切换案例方法。我已阅读以下问题:
Best table / enum driven method calling system
这种用法很好。看看维维克的回应。
我的用法如下,但我不能这样做。
namespace DelegateKavrami
{
class Program
{
static void Main(string[] args)
{
new MyTest().Run();
Console.Read();
}
}
public class MyTest
{
public void Run()
{
MyMessageProcessor myProcessor = new MyMessageProcessor();
myProcessor.Register(0, Sms);
myProcessor.Register(1, Mms);
myProcessor.ProcessMessage(1, Message.Sms);
}
public void Sms(Message message)
{
Console.WriteLine("Sms olarak gönderilen mesaj");
}
void Mms(Message message)
{
Console.WriteLine("Mms olarak gönderilen mesaj:");
}
}
public class MyMessageProcessor
{
public delegate void ProcessMessageDelegate(Message message);
Dictionary methods;
public void Register(int messageType,
ProcessMessageDelegate processMessage)
{
methods[messageType] = processMessage;
}
public void ProcessMessage(int messageType, Message message)
{
if (methods.ContainsKey(messageType))
{
methods[messageType](message);
}
}
}
public enum Message
{
Sms,Mms
}
}
但我的梦想
myProcessor.ProcessMessage(1)
我该如何使用它?上述代码运行后出错: 你调用的对象是空的。 ON 方法[messageType] = processMessage;
【问题讨论】:
标签: c# design-patterns delegates table-driven