static void Main() { var item1 = new SomeBase(); var item2 = new SomeDerived(); var items = new List <ISomeInterface> { item1, item2 }; ISomeInterface group = GroupGenerator.Create(items); group.SetSomeBool(true); Console.WriteLine(item1.SomeBool); // true Console.WriteLine(item2.SomeBool); // true group.SetSomeBool(false); Console.WriteLine(item1.SomeBool); // false Console.WriteLine(item2.SomeBool); // false }