DataContractSerializerに完全に不満を感じているので、XmlSerializerでIXmlSerializableタイプを使用してWCFで起動して実行しようとしています。
IXmlSerializableとXmlSchemaProviderをクラスに実装して、OperationContract用にシリアル化して[XmlSerializerFormat]を宣言しました。
複雑なスキーマを使用すると、WSDLを表示しようとすると次のエラーが発生します。
"Schema type information provided by IXmlSerializable is invalid:
Reference to undeclared attribute group 'anAttributeGroupInMySchema'"
スキーマにはさまざまなインクルードがあります(この属性はそのうちの1つで宣言されています)。含まれているスキーマをコード(schema.Includes
)に追加しましたが、役に立ちませんでした。
最も些細なサンプルプロジェクト(1つの要素と2つの属性を持つ単純なスキーマ、単純な対応するクラス、名前を付けます)でも、私はついにこのエラーを乗り越えましたが、すぐに次のことにぶつかります。
"WCF_IXmlSerializable.TestClass.TestSchemaProvider() must return a valid type
name. Type 'TEST' cannot be found in the targetNamespace='www.test.com'."
残念ながら、有効な型名が何であるかわかりません。それは確かに私のXSD、AFAICSからの要素名ではありません。
何か案は?
編集:
ソースコードの例は、ここからオンラインで表示できます。