2009-12-28 33 views
0

我有例如如何處理通用遺產

public class BaseClass 
{} 

public class DerivedClass1 : BaseClass 
{} 

public class DerivedClass2 : BaseClass 
{ } 

public class DerivedClass3 : BaseClass 
{ } 

public class GenericBaseClass<T> where T : BaseClass 
{ 
    public List<T> collection { get; set; } 
} 

這個代碼現在,我想創建一個新的類,它會從GenericBaseClass<T>繼承和總得有這一類的集合列表。

這是甚至有可能這樣嗎? 因爲List<BaseClass> = new List<DerivedCLass3>();無效。

要達到此目的,唯一的方法是從GenericBaseClass中刪除collection屬性,並直接在派生類中添加集合List。

我希望我自己表示理解,因爲英語不是我的第一語言:-)

+1

你說:「我想創建一個新的類,它會從GenericBaseClass 繼承」。什麼是「T」? 「T」僅在GenericBaseClass 的聲明範圍內。你的意思是你想讓派生類成爲GenericBaseClass 中的嵌套類嗎?或者你的意思是你想要聲明一個不同的通用類型,它具有不同的T? – 2009-12-28 15:59:59

回答

2
public class GenericBaseClass<T> where T : BaseClass 
{ 
    public List<T> collection { get; set; } 
} 

public class GenericDerivedClass1 : GenericBaseClass<DerivedClass1> 
{ 
    // Here the collection property will be of type List<DerivedClass1> 
} 
+0

我在一個方法中使用此GenericBaseClass 作爲參數類型,我無法傳遞GenericDerivedClass1作爲參數值。有什麼辦法可以做到嗎? – user137348 2009-12-28 14:35:32