2016-09-07 2 views
1

개체를 serialize하여 매개 변수 유형이 개체의 부모 인 메서드에 전달하려고합니다.파생 클래스를 기본 클래스로 serialize하는 방법은 무엇입니까?

예를 들어이 클래스가 있습니다.

public class Base 
{ 
    public string TypeName => GetType().Name; 
    public string Data => JsonConvert.SerializeObject(this); 
} 

public class Derived : Base 
{ 
    public string Name { get; set; } 
    public int data1 { get; set; } 
    public int data2 { get; set; } 
} 

public class Derived2 : Base 
{ 
    ... 
} 

.... 

다음과 같이 내가 코드를 작성,

var obj = new Derived { Name = "John", data1 = 2000, data2 = 1500 }; 
Send(obj); 

그리고 (..) 메소드가 보내기,

public void Send(Base info) 
{ 
    // Do Something with "info". 
} 

내가 변수 OBJ의 인스턴스를

이 프로그램은 무한 재귀 때문에로 떨어졌다 기본 클래스에서 "데이터".

어떻게 코드를 변경할 수 있습니까?

답변

1

무한 재귀 직렬화되는 데이터 속성 의한 경우 - 직렬화 인해 루프가 시작된다.

가장 좋은 해결책은 속성을 메서드로 변경하는 것입니다.이 메서드는 serialize되지 않으며 목적에 더 부합합니다. 속성에서 죽은 경우 - 단지 http://www.newtonsoft.com/json/help/html/PropertyJsonIgnore.htm으로 속성을 표시하면 직렬화 중에 무시됩니다.

관련 문제