using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var a = new A();
a.Controls.Add(new B());
a.Controls.Add(new C());
a.Controls.Add(new D());
a.DisplayMode = DisplayMode.Edit;
}
}
public enum DisplayMode { View = 0, Edit = 1 }
public interface IMode
{
DisplayMode DisplayMode { get; set; }
}
public class A
{
private DisplayMode mDisplayMode;
public A()
{
mDisplayMode = DisplayMode.View;
Controls = new List<object>();
}
public DisplayMode DisplayMode
{
get
{
return mDisplayMode;
}
set
{
if (mDisplayMode != value)
{
mDisplayMode = value;
foreach (var control in Controls)
if (control is IMode)
(control as IMode).DisplayMode = value;
// the control ( b ).DisplayMode is not firing or executing the set
// what i am missing here?
}
}
}
public List<object> Controls { get; set; }
}
public class B : IMode
{
private DisplayMode mDisplayMode;
public DisplayMode DisplayMode
{
get
{
return mDisplayMode;
}
set
{
if (mDisplayMode != value)
{
mDisplayMode = value;
Console.WriteLine("Changing the display mode!");
}
}
}
}
public class C
{
}
public class D
{
}