c# - 如何实现一个类的泛型和非泛型版本?

标签 c# generics

我想实现泛型类的非泛型版本。像这样。

public class ServerSentEvent : ServerSentEvent<NoAdditionalClientInformation>

public class ServerSentEvent<ClientInfo> : IServerSentEvent

为了解决这个问题,我必须制作一个虚拟/空类 - NoAdditionalClientInformation。

没有空类还有其他方法吗?

最佳答案

通常你会反过来做:

public class ServerSentEvent : IServerSentEvent
{}

public class ServerSentEvent<ClientInfo> : ServerSentEvent
{}

这样,通用版本是非通用版本的更具体的子类型,允许您在其中放置更多信息,但在需要非通用类型的任何地方都使用通用类型。

如果你按照你的建议去做,你将需要指定一些默认类型;如果你想不出一个默认的,它可能是错误的顺序,但通常它可能取决于具体情况。

关于c# - 如何实现一个类的泛型和非泛型版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353066/

相关文章:

java - 为什么 Google Gson.toJson 会丢失数据

java - 具有返回列表的方法的通用接口(interface)

c# - 为什么我不能将索引器作为 ref 参数传递?

c# - 使用 C# 的 Interface<T> 接口(interface)

c# - 引用不是有效的可视 DependencyObject

java - 有界通配符和类型参数有什么区别?

java - 一个类在另一个类中的实例

c# - StreamReader ReadLine 正在修改/不释放 Stream

c# - 将值为 System.Guid.Empty 的 NHibernate "translate"C# POCO Guid 属性保存为数据库 uniqueidentifier 字段的 NULL?

swift - Swift 3 中泛型协议(protocol)内部的泛型协议(protocol)