2013-01-16 121 views
4

我想實現我的泛型類的非泛型版本。喜歡這個。如何實現泛型和非泛型版本的類?

public class ServerSentEvent : ServerSentEvent<NoAdditionalClientInformation> 

public class ServerSentEvent<ClientInfo> : IServerSentEvent 

爲了解決這個問題,我不得不做出一個假/空類 - NoAdditionalClientInformation。

有沒有另一種方法來做到這一點沒有空課?

+2

你是否知道非泛型通用類型?如果是,那麼就使用它.. –

+4

如果你看看.NET BCL類,你會注意到,通用版本是非通用版本的子類,而不是相反的方式。例如'IEnumerable '實現'IEnumerable'。 –

+0

如果通用類繼承自非通用類:'公共類ServerSentEvent :ServerSentEvent'和'公共類ServerSentEvent:IServerSentEvent'怎麼辦? –

回答

5

通常你會做它周圍的其他方法:

public class ServerSentEvent : IServerSentEvent 
{} 

public class ServerSentEvent<ClientInfo> : ServerSentEvent 
{} 

這樣的仿製藥就會被非通用一個更特定亞型讓你把更多的信息,但使用預期非泛型類型的泛型類型。

如果你喜歡你的建議,你需要指定一些默認類型;如果你不能想到默認的,那可能是錯誤的順序,但總的來說,它可能取決於案例。

+0

您能否提供更詳細的示例? – ferit

+0

@Saibot究竟是什麼?也許你應該問自己的問題? – poke

+0

是的,那麼它將在10秒內被標記爲重複:D – ferit