Him*_*ere 5 c# namespaces xml-serialization
I\xc2\xb4m 使用 SGen 为程序集中的类型创建 XmlSerilaization 程序集。以下是该程序集的简化代码示例:
\n\nnamespace ConsoleApplication1\n{\n public class Program\n {\n public MyNS2.Flurstueck Flurstueck = new MyNS2.Flurstueck();\n }\n}\n\nnamespace ConsoleApplication1.MyNS1\n{\n [XmlRoot("Flurstueck1")]\n public class Flurstueck\n {\n public string kz1 = "kz1";\n }\n}\nnamespace ConsoleApplication1.MyNS2\n{\n [XmlRoot("Flurstueck2")]\n public class Flurstueck\n {\n public string kz2 = "kz2";\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n当我使用该项目进行编译并启用序列化程序集的创建时,我收到“反映类型 ConsoleApplication1.MySN1.Flurstueck 时出错”。显然我们这里有命名冲突,因为类MyNS1.Flurstueck和MyNS2.Flurstueck具有相同的名称。这当然可以编译,因为两种类型都有不同的命名空间。创建序列化程序集时失败。
但是,当我手动将该类型序列化到文件中并再次反序列化它(因此无需创建序列化程序集并让序列化及时发生)时,它会起作用:
\n\nXmlSerializer ser = new XmlSerializer(typeof(Program));\nusing (TextWriter writer = new StreamWriter(path))\n{\n ser.Serialize(writer, new Program());\n}\n\nusing (TextReader reader = new StreamReader(path))\n{\n var o = ser.Deserialize(reader);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我怎样才能让它与 Sgen 一起工作?当然,我可以将类型重命名为不同的类型,但我想知道为什么 Sgen 不能解析类型,而XmlSerializer可以。