【发布时间】:2012-01-25 17:13:52
【问题描述】:
我有一个想要公开的 WCF 服务方法。
服务方法参数类型是具有相同类名和XML命名空间的所有类型的基类。
所有派生类型都在不同的 C# 命名空间中,但必须在相同的 xml 命名空间中公开。下面是实现。
但是,尝试添加重复 Shape 类型的服务引用时发生错误。
理想情况下,Visual Studio 应该为第二个形状(例如 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 { }
}
更新
我能够在 WCF 服务端发布它们,这让人认为它不能在客户端做同样的事情的原因是因为 WSDL 不支持像 C# 这样的编程语言中的名称空间。
【问题讨论】:
标签: xml wcf web-services soap xsd