В моем XSD у меня есть что-то похожее на это:
<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns:jump="testThingy" elementFormDefault="qualified" targetNamespace="testThingy" xmlns="http://www.w3.org/2001/XMLSchema">
<element name="command" type="jump:commandType" />
<complexType name="loginType">
<sequence>
<element name="userName" />
</sequence>
</complexType>
<complexType name="commandType">
<sequence>
<choice>
<element name="login" type="jump:loginType" />
<element name="logout" />
</choice>
<!-- There are other elements here but they are IRRELEVANT to the question -->
</sequence>
</complexType>
</schema>
Таким образом, с помощью инструмента XSD to C# (xsd.exe или Xsd2Code) создаются 2 класса (commandType и loginType). Но если бы я хотел отправить команду выхода из системы, XML должен выглядеть так:
<command>
<logout />
</command>
Но у меня нет - какого-либо эквивалента - logoutType. В сгенерированном классе, если я хочу использовать выход из системы, то commandType ожидает "XmlElement".
Предполагая, что инструменты XSD to C# не могут сгенерировать этот класс для меня, как написать класс, который в основном сводится к сериализации и имеет тип XmlElement, чтобы он соответствовал commandType?
(примечание: у меня нет контроля над XSD, иначе я бы изменил его, включив новый комплексный тип)