#1,041 – Adding New Type Parameters when You Derive from a Generic Class
February 26, 2014 Leave a comment
You can define a generic class that inherits from another generic class, for example:
public class ListPlus<T> : List<T>
You can also add new type parameters in the new class being defined. In the example below, ListPlus derives from List<T> and adds a second type parameter.
public class ListPlus<T, TShadow> : List<T> { private List<TShadow> shadowList = new List<TShadow>(); public void AddItem(T mainItem, TShadow shadowItem) { base.Add(mainItem); shadowList.Add(shadowItem); } }
When we construct the type, we need to provide type arguments for both type parameters.
ListPlus<Dog, Cat> myListPlus = new ListPlus<Dog, Cat>(); Dog fido = new Dog("Fido"); Cat puff = new Cat("Puff"); myListPlus.AddItem(fido, puff);