2016-08-16 9 views
0

C#では、プリミティブの種類を追跡するためにプリミティブ型をラッピングしています。私はその後、オブジェクトにこれらの型を構成するJson.netコードを複製しないで折り返しタイプを逆シリアル化する

class Meters { 
    public readonly float Value; 
    public Meters(float v) { Value = v; } 
} 

{ 
    "Width": 3.23, 
    "Height": 2.0 
} 
:Json.netを使用して

class Box { 
    public Meters Width { get; set; } 
    public Meters Height { get; set; } 
} 

が、私はこのようになりJSONデータからBoxをデシリアライズする必要がありますここでは一例です

jsonを"Width": { "Value": 3.23 }に変更せずに、Metersのようなあらゆる種類の定型コードを繰り返して使用することはできませんか?

ありがとうございました。

答えて

5

これはプリミティブ(つまりfloat,、doubleなど)をオブジェクトに変換できるクラスにimplicit operatorを追加することで実現できます。といった。

class Meters 
{ 

    public static implicit operator Meters(float value) 
    { 
     return new Meters(value); 
    } 

    public static implicit operator Meters(decimal value) 
    { 
     return new Meters((float)value); 
    } 

    public static implicit operator Meters(double value) 
    { 
     return new Meters((float)value); 
    } 

    public readonly float Value; 

    public Meters(float v) { Value = v; } 

    public override string ToString() 
    { 
     return Value.ToString(); 
    } 
} 
関連する問題