我有一個我想公開的WCF服務方法。具有相同類型名稱的WCF服務類型,相同的XSD名稱空間
服務方法參數類型是具有相同類名稱和XML名稱空間的所有類型的基類。
所有派生類型在不同的C#名稱空間中,但必須在同一個xml名稱空間中公開。以下是實施。
但是,嘗試添加說明重複的Shape類型的服務引用時發生錯誤。
理想情況下,Visual Studio應爲第二個Shape自動分配一個C#名稱空間(例如Set1.Shape,Set2.Shape)。所以它可以下載所有類型。
任何想法將非常感激。
[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 { }
}
更新
我能夠把它們發佈在WCF服務端,這讓人想到它不能做客戶端上的相同的原因,是因爲WSDL不支持的編程名字空間像C#這樣的語言。
CLR類型名稱相同,但它們位於不同的名稱空間中。這可能是因爲WSDL不支持C#名稱空間,或者wcf客戶端沒有關於何時分配不同名稱空間的信息。 – Pingpong 2011-12-21 23:37:22
默認情況下,CLR名稱空間用於創建XML名稱空間,但它會爲每個類導致不同的XML名稱空間,這是您提到的不可選項。一旦重新定義了XML名稱空間,就不再使用CLR名稱空間。 – 2011-12-21 23:46:11