using System.Collections.Generic;
abstract class UniqueObject<T> where T : class
static protected List<T> items = new List<T>();
class Foo : UniqueObject<Foo>
Console.WriteLine(UniqueObject<Foo>.items.Count + " item(s) of Foo");
class Bar : UniqueObject<Bar>
Console.WriteLine(UniqueObject<Bar>.items.Count + " item(s) of Bar");
public static void Main()