我的基本概念是在集合中存储不同的类,并根据接口类型检索项目。
所以解释会更好:
var list = new List<object>();
list.Add(new Dog());
list.Add(new Rose());
//Retrieve the stored value casting as IAnimal which has Ianimal interface...
list.Get<IAnimal>();
public class Dog : IAnimal
{
}
public class Rose : IPlant
{
}
有可能以某种方式,还是有更好的设计呢?
谢谢!
答案 0 :(得分:5)
如果您想要检索IAnimal
的所有项目,可以使用OfType<T>()
扩展方法。
var animals = list.OfType<IAnimal>();
答案 1 :(得分:0)
我认为最好为您的存储列表再添加一个接口。它的封装更美观。
var list = new List<IStoredObject>();
list.Add(new Dog());
list.Add(new Rose());
//Retrieve the stored value casting as IAnimal which has Ianimal interface...
list.Get<IAnimal>();
public class Dog : IAnimal, IStoredObject
{
}
public class Rose : IPlant, IStoredObject
{
}
此外我猜@Fedor Hajdu