>
C # .NET 2.0을 사용하면 [Serializable] 가있는 복합 데이터 클래스가 있습니다.  그것에 속성. 나는 XMLSerializer 를 만들고 있습니다  클래스와 생성자에 전달 :

XmlSerializer serializer = new XmlSerializer(typeof(DataClass));

예외가 발생합니다 :

There was an error reflecting type.

데이터 클래스에는 또 다른 복합 객체가 있습니다. 이것도 [Serializable] 가 필요합니까?  속성을 사용하거나 맨 위 객체에 배치하면 내부의 모든 객체에 재귀 적으로 적용됩니까?

  • 답변 # 1

    내부 예외를 살펴보십시오. 직렬화에 문제가있는 필드/프로퍼티를 알려줍니다.

    [XmlIgnore] 로 장식하여 필드/속성을 XML 직렬화에서 제외 할 수 있습니다.  속성.

    나는 그 XmlSerializer 생각하지 않습니다   [Serializable] 를 사용합니다  속성이므로 문제가 의심됩니다.

  • 답변 # 2

    직렬화 된 클래스에는 기본 (즉, 매개 변수가없는) 생성자가 있어야합니다. 생성자가 전혀 없다면 괜찮습니다. 그러나 매개 변수가있는 생성자가있는 경우 기본 구성 요소도 추가해야합니다.

  • 답변 # 3

    유사한 문제가 있었고 serializer가 내가 가지고있는 2 개의 클래스를 구분할 수 없다는 것이 밝혀졌습니다 같은 이름으로 (하나는 다른 것의 서브 클래스였습니다). 내부 예외는 다음과 같습니다.

    'Types BaseNamespace.Class1'및 'BaseNamespace.SubNamespace.Class1'은 모두 네임 스페이스 ''에서 XML 유형 이름 'Class1'을 사용합니다. XML 속성을 사용하여 유형에 고유 한 XML 이름 및/또는 네임 스페이스를 지정하십시오.

    BaseNamespace.SubNamespace.Class1은 BaseNamespace.Class1의 서브 클래스입니다.

    필요한 것은 클래스 중 하나에 속성을 추가하는 것이 었습니다 (기본 클래스에 추가했습니다) :

    [XmlType("BaseNamespace.Class1")]
    
    

    참고 : 클래스 계층이 더 있으면 속성도 추가해야합니다.

  • 답변 # 4

    또한 XmlSerializer  추상 속성을 직렬화 할 수 없습니다. 솔루션 코드를 추가 한 여기에서 내 질문을 참조하십시오 ..

    XML 직렬화 및 상속 된 유형

  • 답변 # 5

    나에게 가장 일반적인 이유 :

    - the object being serialized has no parameterless constructor
     - the object contains Dictionary
     - the object has some public Interface members
    
    

  • 이전 typedef - 처음에 유형을 선언하고 나중에 C에서 정의 할 수 있습니까?
  • 다음 python - 이 ROC 곡선이 의미가 있습니까?