C# 在C中的集合中存储不同的类型#
我的基本概念是在集合中存储不同的类,并根据接口类型检索项 因此,更好的解释是:C# 在C中的集合中存储不同的类型#,c#,C#,我的基本概念是在集合中存储不同的类,并根据接口类型检索项 因此,更好的解释是: 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 : I
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
{
}
var list=newlist();
添加(新狗());
添加(新玫瑰());
//检索存储值转换为具有IAnimal接口的IAnimal。。。
list.Get();
公家犬:IAnimal
{
}
公共类玫瑰:IPlant
{
}
这是可能的,还是有更好的设计
谢谢大家! 如果要检索属于
IAnimal
的所有项目,可以使用OfType()
扩展方法
var animals = list.OfType<IAnimal>();
var-animals=list.OfType();
如果要检索IAnimal
中的所有项目,可以使用of type()
扩展方法
var animals = list.OfType<IAnimal>();
var-animals=list.OfType();
我认为最好为存储列表多制作一个界面。它的封装更漂亮
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
{
}
var list=newlist();
添加(新狗());
添加(新玫瑰());
//检索存储值转换为具有IAnimal接口的IAnimal。。。
list.Get();
公共级犬:IAnimal、iStoreObject
{
}
公共类:IPlant、iStoreObject
{
}
此外,我想使用@Fedor Hajdu时,最好为存储列表多制作一个接口。它的封装更漂亮
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
{
}
var list=newlist();
添加(新狗());
添加(新玫瑰());
//检索存储值转换为具有IAnimal接口的IAnimal。。。
list.Get();
公共级犬:IAnimal、iStoreObject
{
}
公共类:IPlant、iStoreObject
{
}
此外,我猜@Fedor Hajdu也许你真的想要一本
字典
dictionary[typeof(IAnimal)]=newdog()
通常您会使用接口执行此类任务。然而,在您的示例中,狗
和玫瑰
几乎没有任何共同之处,因此最好只为每个狗保留两个集合。毕竟C是强类型语言。也许你真的想要一本字典
dictionary[typeof(IAnimal)]=newdog()
通常您会使用接口执行此类任务。然而,在您的示例中,狗
和玫瑰
几乎没有任何共同之处,因此最好只为每个狗保留两个集合。毕竟C#是强类型语言。