2014-03-05 63 views
0

我的基本概念是將不同的類存儲在集合中,並根據接口類型檢索項目。在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 : IAnimal 
{ 
} 

public class Rose : IPlant 
{ 
} 

是否有可能以某種方式,還是有它的任何更好的設計?

謝謝!

+1

也許你真的想要一個'詞典<類型,對象>'? '字典[typeof(IAnimal)] = new Dog()' –

+2

通常你會使用接口來完成這類任務。然而,在你的例子中,「Dog」和「Rose」幾乎沒有任何共同之處,所以最好每個都保留兩個集合。畢竟C#是強類型語言。 – Leron

回答

5

如果要檢索所有IAnimal的項目,可以使用OfType<T>()擴展方法。

var animals = list.OfType<IAnimal>(); 
+0

就是這樣,謝謝! – user1692315

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豪伊杜猜

相關問題