2017-08-10 8 views
0
interface A { string Name {get;set;}} 

interface B { string Name {get;set;}} 

class C : A, B { string A.Name {get;set;} string B.Name {get;set;}} 

var c = new C(); 
((A)c).Name = "a"; 
((B)c).Name = "b"; 

var s = JsonConvert.SerializeObject(c); 

結果はプロパティ値のない空のjsonオブジェクトです。そのようなオブジェクトをシリアライズしてデシリアライズすることは可能ですか?明示的に実装されたインターフェイスプロパティでクラスをjson-serializeすることは可能ですか?

+0

明示的なインターフェイスの実装は、 'private'メンバーになります。 jsonにプライベートプロパティをシリアル化するように指示する必要があります。シリアライズするプライベートプロパティ/フィールドに '[JsonProperty]'を追加するか、カスタム[contract resolver](https://stackoverflow.com/a/24107081/1997232)を使用することができます。 – Sinatr

答えて

1

プライベートプロパティをシリアル化するためにJSONを教える: "A"、 "Application.B.Name":

class C : A, B 
{ 
    [JsonProperty] 
    string A.Name { get; set; } 
    [JsonProperty] 
    string B.Name { get; set; } 
} 

そして、あなたのコードは

{ "Application.A.Name" を生成します: "b"}

関連する問題