이의 우리가 이와 유사한 몇 가지 코드가 있다고 가정하자 : 제목 모두의 맥락에서경우 InvalidOperationException이
[XmlRoot("class-a")]
public class ClassA
{
[XmlElement("variable")] // without this everything works fine
public ClassB<Type1, Type2> Variable;
public ClassA()
{
new XmlSerializer(typeof(ClassA)); // exception occurs here
}
}
public class ClassB<TKey, TValue>
: NonSerializableClassC<TKey, TValue>, IXmlSerializable
{
// irrelevant stuff
}
꽤 자기 설명이다.
XmlSerialization의 내부가 성능상의 문제로 인해 완전히 다른 .NET CF [3.5]입니다. 동일한 코드가 .NET 데스크톱 버전에서 완벽하게 작동합니다 [4.0]. 또한 XmlElementAttribute를 요소 별칭에만 사용하므로 변수 자체의 이름을 바꾸면 쉽게 도달 할 수 있으므로 문제는 실제로 내 작업에 영향을 미치지 않습니다. 그러나 그것은 실제 해결책이 아닙니다.
그래서 ... 어떤 아이디어가 효과가 있습니까?
스택 트레이스의
마지막 항목 :
// . . .
System.Xml.dll!System.Xml.Serialization.XmlSerializer.XmlSerializer(System.Type type = {Name = "ClassA" FullName = "RandomProject.ClassA"})
System.Xml.dll!System.Xml.Serialization.XmlSerializer.XmlSerializer(System.Type type = {Name = "ClassA" FullName = "RandomProject.ClassA"}, System.Xml.Serialization.XmlAttributeOverrides overrides = null, System.Type[] extraTypes = null, System.Xml.Serialization.XmlRootAttribute root = null, string defaultNamespace = null)
System.Xml.dll!System.Xml.Serialization.XmlSerializer.findTypeByType(System.Type type = {Name = "ClassA" FullName = "RandomProject.ClassA"}, string defaultNamespace = null)
System.Xml.dll!System.Xml.Serialization.XmlSerializationReflector.FindType(System.Type type = {Name = "ClassA" FullName = "RandomProject.ClassA"}, bool encoded = false, string defaultNamespace = null, bool searchIntrinsics = true)
System.Xml.dll!System.Xml.Serialization.XmlSerializationReflector.AddType(System.Type type = {Name = "ClassA" FullName = "RandomProject.ClassA"}, bool encoded = false, string defaultNS = null, bool genericNullableArg = false)
UPD1 : 그런데, 내가 XmlTypeAttribute/XmlRootAttribute를가 ClassB가 선언 위에 추가하는 경우 - 같은 예외 같은 장소에서 발생합니다.
나는 당신을 위해 대답을하지 않지만, Google은 내가 아는 –
:-(이 현상을 발생 유일 아니지만이 정확한 문제가 어디 언급되지 않았 음을 밝혀와 전혀 링크는 우리에게 가장 사랑하는 사람을 이끌었습니다 :) –