2016-11-14 1 views
0

내가 좋아하는 내장 아래 ClassToSerialize를 직렬화 및 역 직렬화 할 수있는 방법을 찾기 위해 노력하고 있어요 : 클래스는 인스턴스의 API 및 역 직렬화에 전달됩니다C# 사용자 정의 직렬화

[Serializable] 
    public interface IFoo 
    { 
    } 

    [Serializable] 
    public class BaseFoo : IFoo 
    { 
    } 
    [Serializable] 
    public class Foo1 : BaseFoo 
    { 
     public string Foo1_Member1 { get; set; } 
     public int Foo1_Member2 { get; set; } 
    } 
    [Serializable] 
    public class Foo2 : BaseFoo 
    { 
     public IList<IFoo> Foo2_Member3 { get; set; } 
     public string Foo2_Member4 { get; set; } 
    } 
    [Serializable] 
    public class ClassToSerialize 
    { 
     public string Class_Member1; 
     public IFoo Foo; 
    } 

Foo1과 Foo2를 재구성하여 "Foo"속성에 배치하고 체인을 IList < IFoo> 또는 이와 유사한 객체로 가져와야합니다.

나는 이것으로 하루 종일 붙어 있었고 나는 아이디어가 없다! 비슷한 달성을하려고 다른 사람들을 위해

+0

시도한 것을 보여줄 수 있습니까? – axlj

+0

클래스를 직렬화하기 위해 사용하는 기술/라이브러리는 무엇입니까? 나는'[Serializable]'또는'[DataContract]'와 같은 일반적인 속성을 보지 못했습니다. DataContractSerializer는이 문제를 처리하기 위해 KnownTypes를 가지고 있지만 DataContractSerializer를 사용하지 않는 경우에는 그다지 좋지 않습니다. –

+0

저는 XML 속성 구현에서부터 'ISerializable'의 맞춤 구현에 이르기까지 모든 것을 시도해 왔습니다. 그러나, 나는 나의 노력에 초점을 맞춘 검증 된 방향을 찾고있다. –

답변

0

: 나는 BaseFoo, Foo1, Foo2ClassToSerializeISerializable을 구현 결국했습니다.

인터페이스에 FooType Type 필드를 추가하고 기본 클래스에서 구현했습니다.

구현에서 나는 처음으로 BaseFoo으로 deserialize하고 Foo1 또는 Foo2 중 하나를 기반으로 다시 deserialize합니다.

나는 더 나은 접근 방식을 듣고 싶습니다.

관련 문제