fork download
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public class Program
  5. {
  6. public static void Main()
  7. {
  8. var a = new A();
  9. a.Controls.Add(new B());
  10. a.Controls.Add(new C());
  11. a.Controls.Add(new D());
  12. a.DisplayMode = DisplayMode.Edit;
  13. }
  14. }
  15.  
  16. public enum DisplayMode { View = 0, Edit = 1 }
  17.  
  18. public interface IMode
  19. {
  20. DisplayMode DisplayMode { get; set; }
  21. }
  22.  
  23. public class A
  24. {
  25. private DisplayMode mDisplayMode;
  26. public A()
  27. {
  28. mDisplayMode = DisplayMode.View;
  29. Controls = new List<object>();
  30. }
  31. public DisplayMode DisplayMode
  32. {
  33. get
  34. {
  35. return mDisplayMode;
  36. }
  37. set
  38. {
  39. if (mDisplayMode != value)
  40. {
  41. mDisplayMode = value;
  42. foreach (var control in Controls)
  43. if (control is IMode)
  44. (control as IMode).DisplayMode = value;
  45. // the control ( b ).DisplayMode is not firing or executing the set
  46. // what i am missing here?
  47. }
  48. }
  49. }
  50. public List<object> Controls { get; set; }
  51. }
  52.  
  53. public class B : IMode
  54. {
  55. private DisplayMode mDisplayMode;
  56. public DisplayMode DisplayMode
  57. {
  58. get
  59. {
  60. return mDisplayMode;
  61. }
  62. set
  63. {
  64. if (mDisplayMode != value)
  65. {
  66. mDisplayMode = value;
  67. Console.WriteLine("Changing the display mode!");
  68. }
  69. }
  70. }
  71. }
  72.  
  73. public class C
  74. {
  75.  
  76. }
  77.  
  78. public class D
  79. {
  80.  
  81. }
Success #stdin #stdout 0.02s 33856KB
stdin
Standard input is empty
stdout
Changing the display mode!