2017-08-01 3 views
-3

2017年に一般的なプロパティの実装を作成する良い方法はありますか?私はC#でジェネリックにこのURLを見直しましたが、私は私が考えている一般的な実装を実装する方法については不明だ

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

私は下流のシリアライズ用のカスタムKeyValuePairクラスを作成する必要があります。ダウンストリームjsonのシリアル化はネイティブの.netディクショナリを汎用のjavascriptオブジェクトに変換し、複雑さとオーバーヘッドを追加するので、カスタムのKeyvaluePairクラスを作成する必要があります。

しかし、このカスタムKeyValuePairクラスを汎用的にして、キーまたは値をintまたはstringにすることができます。これをC#で実装する最もエレガントな方法は何でしょうか?次のコードは正しくないですが、私が探しているものを示しています。私はいくつかのグーグルを行なったし、私が見つけた唯一の参照は数年前だったと実装は少しハック見えた

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

。 2017年にこれを行うには良い方法があるかどうかわからない....

+0

' 'はクラス名の後に続き、残りの部分では型名のように' T 'だけを使用します。 – litelite

+3

カスタム(デ)シリアライザを調べることができます。これはこれを行うよりも良いルートになります。 –

+1

これは本当に[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のように読まれます。あなたの根底にある問題は、それが組み込みの'Dictionary 'や 'KeyValuePair '型のようなものではなく、代わりにそれらの型を使うときに実際にどのようなシリアライゼーションの問題があるのか​​を尋ねてください。 –

答えて

0

次の実装は完璧に動作します:ポインタ@liteliteため

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

ありがとう!

+2

それは単に 'System.Collections.Generic.KeyValuePair 'を使うよりも役立つでしょうか? – tinudu

+0

フレームワークに組み込まれている 'KayValuePair'は、変更不能な構造体です。それが私が見ることができる唯一の違いです。おそらく、OPはこれにいくつかのライトを陰にすることができます。 –

関連する問題