2017-08-01 25 views
-3

我正在審查在C#泛型這個url,但我對如何實現通用實現我心目中不清楚:2017年創建通用屬性實現的好方法?

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-methods

我需要爲下游序列化的自定義KeyValuePair類。下游json序列化將原生.net字典轉換爲通用javascript對象,這增加了複雜性和開銷,因此我需要創建一個自定義KeyvaluePair類。

但是,我想使此自定義KeyValuePair類通用,因此鍵或值可以是int或字符串。用C#實現這個最優雅的方法是什麼?下面的代碼是不正確,但證明什麼,我在尋找:

public class KeyValuePair 
{ 
    public <T> Key { get; set; } 
    public <T> Value { get; set; } 
} 

我做了一些google搜索,我發現的唯一引用是幾年老的實現顯得有點哈克。不知道是否有更好的方法來做到這一點在2017年....

+0

''在類名後面,然後在其餘部分使用'T',就像它是一個類型名稱 – litelite

+3

您可以查看自定義(de)串行器。這將是更好的路線,而不是這樣做。 –

+1

這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - 你的潛在問題聽起來像它應該可以解決與內置'字典'或'KeyValuePair '類型 - 你應該問一下,而不是 - 詳細說明在使用這些類型時你實際上遇到了哪些序列化問題等。 –

回答

0

下實現完美的作品:

public class MyCustomKeyValuePair<T1, T2> 
{ 
    public T1 Key { get; set; } 
    public T2 Value { get; set; } 
} 

感謝指針@litelite!

+2

這比僅使用'System.Collections.Generic.KeyValuePair '更有用嗎? – tinudu

+0

該框架的內置'KayValuePair'是一個不可變的結構體。這是我能看到的唯一區別。也許OP可以遮蔽一些簡單的東西。 –