Guest User

Untitled

a guest
Jan 16th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. namespace DelegateKavrami
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7.  
  8. new MyTest().Run();
  9. Console.Read();
  10. }
  11.  
  12. }
  13.  
  14.  
  15. public class MyTest
  16. {
  17. public void Run()
  18. {
  19. MyMessageProcessor myProcessor = new MyMessageProcessor();
  20. myProcessor.Register(0, Sms);
  21. myProcessor.Register(1, Mms);
  22. myProcessor.ProcessMessage(1, Message.Sms);
  23.  
  24. }
  25. public void Sms(Message message)
  26. {
  27. Console.WriteLine("Sms olarak gönderilen mesaj");
  28. }
  29. void Mms(Message message)
  30. {
  31. Console.WriteLine("Mms olarak gönderilen mesaj:");
  32. }
  33.  
  34. }
  35.  
  36. public class MyMessageProcessor
  37. {
  38. public delegate void ProcessMessageDelegate(Message message);
  39.  
  40. Dictionary methods;
  41.  
  42. public void Register(int messageType,
  43. ProcessMessageDelegate processMessage)
  44. {
  45. methods[messageType] = processMessage;
  46. }
  47.  
  48. public void ProcessMessage(int messageType, Message message)
  49. {
  50. if (methods.ContainsKey(messageType))
  51. {
  52. methods[messageType](message);
  53. }
  54. }
  55. }
  56.  
  57. public enum Message
  58. {
  59. Sms,Mms
  60. }
  61.  
  62. }
  63.  
  64. public enum messageType
  65. {
  66. Sms, Mms
  67. }
  68.  
  69. public class Message
  70. {
  71. public MessageType MessageType { get; get; }
  72. public string Data {get; set; } // assume data to be processed
  73. }
  74.  
  75.  
  76. interface IHandler
  77. {
  78. void Process(Message message);
  79. }
  80.  
  81. class SmsHander : IHandler
  82. {
  83. void Process(Message message)
  84. {}
  85. }
  86.  
  87. class MmsHander : IHandler
  88. {
  89. void Process(Message message)
  90. {}
  91. }
  92.  
  93. class MessageProcessor
  94. {
  95. private Dictionary<MessageType, IHandler>
  96. handlers = new Dictionary<MessageType, IHandler>()
  97. {
  98. { MessageType.Sms, new SmsHander() },
  99. { MessageType.Mms, new MmsHander() },
  100. };
  101.  
  102. public void Process(Message message)
  103. {
  104. handlers[message.MessageType].Process(message);
  105. }
  106. }
  107.  
  108. var processor = new Processor();
  109. processor.Process(message);
  110.  
  111. Dictionary methods = new Dictionary();
Add Comment
Please, Sign In to add comment