2016-07-10 4 views
0

DynamicObject에서 계승 된 클래스가 있습니다. 내가 Newtonsoft JSON을 사용하여 JSON으로 직렬화 할DynamicObject를 JSON으로 변환 할 때 빈 결과가 발생했습니다

public class MyObject : DynamicObject 
{ 
    public List<MyProperty> Properties { get; set; } 
} 
public class MyProperty 
{ 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

: 그것은 List<MyProperty>에 저장된 모든 속성이 포함되어 있습니다. 그러나 그것을 변환 한 후에 나는 빈 객체를 얻습니다 : {}. DynamicObject에서 상속을 제거하면 내 모든 속성이 JSON 배열로 직렬화됩니다. 그리고 그것은 내가 필요한 것입니다. 해당 상속을 제거하지 않고 클래스를 직렬화하려면 어떻게해야합니까?

답변

0

은 내가 GetDynamicMemberNames 방법을 재정 의하여 내 문제를 해결했습니다

public override IEnumerable<string> GetDynamicMemberNames() 
{ 
    yield return nameof(this.Properties); 
} 

이 지금은 내가 원하는대로 직렬화한다.

0
당신이 원하는에 따라

, 하나 또는 이러한 솔루션 모두가 문제를 해결해야합니다

public class MyObject : DynamicObject 
{ 
    [JsonProperty("MyList")] 
    public List<MyProperty> MyList { get; set; } 
} 

또는 this post에서

[DataContract] 
public class MyObject : DynamicObject 
{ 
    [DataMember] 
    public List<MyProperty> MyList { get; set; } 
} 

.

관련 문제