如何实现类的泛型和非泛型版本?

时间:2013-01-16 07:13:31

标签: c# generics

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

public class ServerSentEvent : ServerSentEvent<NoAdditionalClientInformation>

public class ServerSentEvent<ClientInfo> : IServerSentEvent

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

在没有空类的情况下还有另一种方法吗?

1 个答案:

答案 0 :(得分:7)

通常你只是反过来这样做:

public class ServerSentEvent : IServerSentEvent
{}

public class ServerSentEvent<ClientInfo> : ServerSentEvent
{}

这样,通用版本是非通用版本的更明确的子类型,允许您在其中放入更多信息,但是如果需要非泛型类型,则使用泛型类型。

如果按照建议的方式进行,则需要指定一些默认类型;如果你不能想到一个默认的订单,它可能是错误的订单,但一般来说可能取决于具体情况。