簡體   English   中英

在業務對象和集合中使用泛型

[英]Using generics in a business object and collection

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

我有一個基類定義-

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...}

如果您在不是通用類的其他類中使用基類,那么在將對象傳遞給ValidateRule之類的方法時,恐怕必須為該對象指定類型和鍵參數。

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

您可以探索的另一項是通過將Key作為默認(默認為字符串或int或任何合適的值)可覆蓋(或必須覆蓋)的屬性移入類,從而略微降低了基類的復雜性。 我們發現這種方法(我們將所有集合鍵都強制為字符串)大大降低了類的復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM