gpt4 book ai didi

c# - 在业务对象和集合中使用泛型

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:32 25 4
gpt4 key购买 nike

我有一个基础对象抽象类和一个基础对象集合类,供一些业务对象继承。我试图弄清楚如何将基本对象类型传递给集合类(和其他方法)。我已经能够通过将类包装在接口(interface)中来解决这个问题,但我想知道是否有另一种方法可以做到这一点,或者使用接口(interface)是否是最好的方法。我认为我的问题从下面的代码中可能更有意义。

我有一个基类定义 -

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 之类的方法时,恐怕您将不得不指定对象的类型和关键参数。

在这种设计中,由基础对象实现的接口(interface)可能是最合适的解决方案。我们在代码中广泛使用了这种模式,并且效果很好。

您可以探索的另一项是通过将 Key 作为默认为字符串或 int 或任何合适的可覆盖(或必须覆盖)属性移到类中,稍微降低基类的复杂性。我们发现这种方法(我们强制所有集合键为字符串)显着降低了类的复杂性。

关于c# - 在业务对象和集合中使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com