Поскольку вы не хотите принудительно указывать определенный тип, создайте abstract class
или interface
следующим образом:
interface IFoo { }
и наследуйте его в специфичном для вашего типа Foo (с общими параметрами), например:
interface IFoo<T> : IFoo {}
Таким образом, вы можете просто получить List<IFoo>
и добавить вместо него IFoo<T>
.
Дополнительные примеры:
class FooCollection {
private List<IFoo> _collection;
public FooCollection()
{
_collection = new List<IFoo>();
}
public void Add(IFoo foo)
{
_collection.Add(foo);
}
public void Remove(IFoo foo)
{
_collection.Remove(foo);
}
}