using System.Collections.Generic;
public delegate void EventDelegate(Object o, EventArgs e);
List<IA> IListA = new List<IA>();
IListA.Add(new A() { ID = 1, Value = 0 });
IListA.Add(new B() { ID = 2, Value = 1 });
List<IB> IListB = new List<IB>();
foreach (var itemA in IListA) {
foreach (var itemB in IListB) {
if (itemA.ID == itemB.ID) { itemB.IsAlive = true; f = true; break; }
if (itemA.GetType() == typeof(A)) { o = new GA((A)itemA); }
else if (itemA.GetType() == typeof(B)) { o = new GB((B)itemA); }
foreach (var itemB in IListB) {
Console.WriteLine(string.Format("Name: {0} Value: {1} IsAlive: {2}", itemB.Name, itemB.Value, itemB.IsAlive));
public event EventHandler OnValueChanged;
public int ID { get; internal set; }
if (OnValueChanged != null) { OnValueChanged(this, new EventArgs()); }
public event EventHandler OnValueChanged;
public int ID { get; internal set; }
if (OnValueChanged != null) { OnValueChanged(this, new EventArgs()); }
new int Value { get; set; }
string Name { get; set; }
bool IsAlive { get; set; }
get { return Device.ID; }
get { return Device.Value; }
set { Device.Value = value; }
public string Name { get; set; }
public bool IsAlive { get; set; }
Name = string.Format("Object {0}", device.ID);
Device.OnValueChanged += OnValueChangedEvent;
private void OnValueChangedEvent(Object o, EventArgs e) {
Console.WriteLine(string.Format("[{0}:{1}] = {2}", ID, Name, Value));
get { return Device.ID; }
get { return Device.Value; }
set { Device.Value = value; }
public string Name { get; set; }
public bool IsAlive { get; set; }
Name = string.Format("Object {0}", device.ID);
Device.OnValueChanged += OnValueChangedEvent;
private void OnValueChangedEvent(Object o, EventArgs e) {
Console.WriteLine(string.Format("[{0}:{1}] = {2}", ID, Name, Value));