1

개체 직렬화에 어려움을 겪고 있습니다.이 시나리오에서 Xml 여러 객체를 직렬화하는 방법은 무엇입니까?

내 시나리오를 보여 드리겠습니다. 나는 일반적인 Configuration 클래스를 얻고 포함 한 세 가지 속성 :

public sealed class Configuration 
{ 
    public Configuration(string name, Levels level, ConfigurationSpec spec) 
    { 
     this.Name = name; 
     this.Level = level; 
     this.Spec = spec; 
    } 
    public string Name { get; set; } 
    public Levels Level { get; set; } 
    public ConfigurationSpec Spec { get; set; } 
} 

는 추상 클래스 그리고 그것은 다른 클래스에서 파생 할 수 있기 때문에 마지막 속성은, 중요한 대화입니다 : 포함

public class ConfigurationSpec { } 
public class BinaryConfiguration : ConfigurationSpec 
{ 
    public Range<int> Range1 { get; set; } 
    public Range<int> Range2 { get; set; } 

    public BinaryConfiguration() 
    { 
     this.Range1 = new Range<int>(); 
     this.Range2 = new Range<int>(); 
    } 

    public BinaryConfiguration(Range<int> range1, Range<int> range2) 
    { 
     this.Range1 = range1; 
     this.Range2 = range2; 
    } 
} 

public class Range<T> where T : IComparable<T> 
{ 
    private T _min; 
    private T _max; 

    public Range() 
    { 
    } 

    public Range(T min, T max) 
    { 
     this.Min = min; 
     this.Max = max; 
    } 

    public T Min 
    { 
     get { return _min; } 
     set { _min = value; } 
    } 

    public T Max 
    { 
     get { return _max; } 
     set { _max = value; } 
    } 

이 모든 ConfigurationSpec 클래스 그리고 실제 문제는 ConfigurationSpec에서 파생 된 많은 Specs을 추가 할 것이므로 수백을 의미합니다.

<Configuration> 
    <!-- Maybe here it'll be good specify the type --> 
    <ConfigurationSpec> 
     <Range1 X="2" Y="4" /> 
     <Range2 X="5" Y="10" /> 
    </ConfigurationSpec> 
</Configuration> 

그리고 직렬화를 위해 XmlFile에서이 모든 클래스를 작성하고 읽을 수있는 방법을 알고 싶습니다. 당신은 의심의 여지가있는 경우

, 나만큼 당신의 Configuration 클래스가 제대로 직렬화 할 ConfigurationSpec에 대한 참조가로

답변

2

을 알려 주시기 바랍니다/그들이 필요한 모든 객체를 직렬화.

ConfigurationSpec에 대해서만 말하면 Configuration에 의해 참조되는 유형 만 serialize됩니다 (Configuration의 인스턴스를 직렬화 할 때). 즉, 5 가지가 다른 경우 ConfigurationSpecConfiguration 생성자로 전달할 패킷 만 serialize됩니다

+0

샘플을 사용하여 설명 할 수 있다면 제발요? –

+0

또 다른 의심의 여지가 내 상황에서 볼 수 있듯이 Linq에서 XmlSerialization 또는 XDocument를 직렬화하는 것이 더 낫다. –

+0

XmlSerialization을 사용할 수있다. –

관련 문제