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;
Console.WriteLine("After setting display mode:");
foreach (var c in a.Controls)
Console.WriteLine(c);
}
}
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 B()
{
X=0;
mDisplayMode=DisplayMode.View;
}
public int X { get ; set;}
public DisplayMode DisplayMode
{
get
{
return mDisplayMode;
}
set
{
if (mDisplayMode != value)
{
mDisplayMode = value;
Console.WriteLine("Setting X = 10");
X=10;
}
}
}
public override string ToString()
{
return "Object B : X = " + X;
}
}
public class C {}
public class D {}