gpt4 book ai didi

c# - 用作类型参数约束的空接口(interface)或空基类

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:26 24 4
gpt4 key购买 nike

假设我在 C# 中有一个泛型类,其声明如下所示:

public abstract class DtoQuery<T> where T : class
{ }

现在,类型参数旨在始终是“Dto”类。我有一堆这样的东西,但“问题”是它们没有共同点。它们都只有一堆(不同的)公共(public)属性,没有方法。

理想情况下,我想制作我的 DtoQuery<T> class 只接受这样的“Dto”类作为其类型参数。所以我要么需要创建一个空接口(interface) IDto或一个空的 abstract class Dto .

问题:我应该选择哪一个?注意:Dto 类永远不会扩展任何其他内容或相互扩展!

(好奇的附言:我保证我不会构建非常愚蠢和愚蠢的东西,这是测试项目中的实用功能,不会用于生产代码)。

最佳答案

假设您(无论出于何种原因)有一个如下所示的层次结构:

public class Person { }
public class Employee : Person { }
public class Boss : Person { }

现在想象一下,我们不希望将 Person 视为 DTO - 我们只希望将 Employee 和 Boss 视为 DTO。

在这种情况下,不可能使用抽象类来表示 DTO,因为在 C# 中您只能从一个父类继承。

这是使用界面更好的客观原因。主观上,接口(interface)也更好,因为抽象类的目的是提供一些功能。除此之外,与接口(interface)相比没有任何优势。

经验法则是:不确定时始终使用界面。仅当您需要实现时才使用抽象类。

关于c# - 用作类型参数约束的空接口(interface)或空基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300581/

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