公開したいWCFサービスメソッドがあります。同じタイプ名、同じXSD名前空間を持つWCFサービスタイプ
サービスメソッドのパラメータタイプは、同じクラス名とXML名前空間を持つすべてのタイプの基本クラスです。
すべての派生型は異なるC#名前空間にありますが、同じxml名前空間で公開する必要があります。以下は実装です。
ただし、重複する図形タイプを示すサービス参照を追加しようとしたときにエラーが発生しました。
理想的には、Visual Studioは2番目の図形(例:Set1.Shape、Set2.Shape)のC#名前空間を自動的に割り当てる必要があります。したがって、すべてのタイプをダウンロードできます。
何か考えていただければ幸いです。
[ServiceContract]
public interface IShape
{
[OperationContract]
[ServiceKnownType(typeof(Set1.Shape))]
[ServiceKnownType(typeof(Set2.Shape))]
void GetShape(ShapeBase shape);
}
public class ShapeBase : IShape { }
//Example only.
namespace Set1
{
public class Shape : ShapeBase { }
}
namespace Set2
{
public class Shape : ShapeBase { }
}
更新
WSDLはプログラミングで名前空間をサポートしていないので、私は1つは、それがクライアント側で同じことを行うことができない理由を考えさせるれ、WCFサービス側でそれらを公開することができる午前、ありますC#のような言語。
CLRの型名は同じですが、名前空間が異なります。 WSDLはC#の名前空間をサポートしていないか、wcfクライアントに別の名前空間を割り当てるタイミングに関する情報がないためかもしれません。 – Pingpong
デフォルトでは、CLR名前空間はXML名前空間を作成するために使用されますが、オプションではないと言われているクラスごとにXML名前空間が異なります。 XML名前空間を再定義すると、CLR名前空間は使用されなくなります。 –