2011-11-26 85 views
2

我有一個基礎對象抽象類和一些基礎對象集合類,用於繼承某些業務對象。我想弄清楚如何將基礎對象類型傳遞給集合類(和其他方法)。我已經能夠通過在界面中包裝類來解決這個問題,但我想知道是否有另一種方法來做到這一點,或者如果使用界面是最好的方法。我認爲我的問題可能會從下面的代碼更有意義。在業務對象和集合中使用泛型

我有一個基類定義 -

public abstract class BaseObject<TYPE,KEY>:where TYPE:BaseObject<TYPE,KEY>, new() 

public KEY ObjectId {get;protected set; } 

我有從BaseObject

public class Customer : BaseObject<Customer,Guid> 

我的基本集合類是繼承的類 -

public abstract class BaseObjectCollection<T> : List<T> where T: BaseObject, new() 

我也有一個在其他類中想要引用此基類的幾種方法 -

public bool ValidateRule(BaseObject dataObject) {etc...} 

回答

1

如果您在其他類中不使用泛型的基類,那麼當您將它傳遞給像這樣的方法時,恐怕必須指定對象的類型和關鍵參數ValidateRule。

在這種設計中,由基礎對象實現的接口可能是最合適的解決方案。我們在我們的代碼中廣泛使用這種模式,它工作得很好。

您可以探索的另一個項目是通過將Key移動到默認爲字符串或int或任何可能合適的可重寫(或必須重寫)屬性的類中,稍微減少基類的複雜性。我們發現這種方法(我們強制所有集合鍵都是字符串)顯着降低了類的複雜性。

+0

有道理。感謝您的答覆。 – sarov