列挙型を含むクライアント提供の wsdl ファイルがあります。
<xsd:simpleType name="OurEnum">
<xsd:annotation>
<xsd:appinfo>
<i:Base i:namespace="http://x.com/y/structures/2.0" i:name="Object"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="0"/>
<xsd:enumeration value="1"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="3"/>
<xsd:enumeration value="10"/>
</xsd:restriction>
Svcutil を使用して WCF クライアントを作成すると、enum のコードは次のようになります。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://x.com/y/z/2.0")]
public enum OurEnum
{
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("0")]
Item0,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("1")]
Item1,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("10")]
Item10,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("3")]
Item3,
}
Item0、Item1、Item10 として列挙値を作成するのは非常に面倒です。生成されたコードが次のようになるように、Svcutil をどのように使用する必要がありますか。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://x.com/y/z/2.0")]
public enum OurEnum
{
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("0")]
0,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("1")]
1,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("10")]
10,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("2")]
2,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("3")]
3,
}
Svcutilで次のシリアル化オプションを使用してみました:
"/serializer:Auto" "/serializer:DataContractSerializer (ひどく失敗しました)" "/serializer:XmlSerializer" "/importXmlTypes"
しかし、結果は同じままです。
また、Xsd.exe を使用して、wsdl で参照されている xsds から c-sharp コード ファイルを作成しようとしましたが、結果は同じままです。
期待されることができる他の無料ツールはありますか?
どんな洞察も大歓迎です!