通过使用SVCUTIL.exe或通过添加VS的服务引用生成代理类,它默认将IExtensibleDataObject继承到数据协定类。
WCF数据合同
fun
WCF Servcie
[DataContract]
public class Employee
{
[DataMember(Order = 1)]
public string Id { get; set; }
}
通过在VS和客户端的Employee复合类中添加服务引用生成的代理类默认继承IExtensibleDataObject接口,即使我没有;也不在服务端实现它。
客户端员工类
public class Service1 : IService1
{
public Employee GetEmployeeById(Employee employee)
{
return employee;
}
}
现在的问题是,在从其他客户端生成代理时(例如:Java),它们默认会实现IExtensibleDataObject接口吗?
答案 0 :(得分:0)
不,因为IExtensibleDataObject
是.Net Framework的接口。
即使没有它,服务也会运行。它提供了一种存储额外数据的方法,这在合同中是不存在的:
IExtensibleDataObject接口提供了一个属性 设置或返回用于存储a外部数据的结构 数据合同。额外的数据存储在一个实例中 ExtensionDataObject类并通过ExtensionData访问 属性。在往返操作中,接收,处理数据, 并发回,额外的数据被发送回原始发件人 完整。这对于存储从未来版本收到的数据非常有用 合约。如果您没有实现该接口,那么任何额外的数据都是 在往返行动中被忽略并丢弃。
您可以在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/system.runtime.serialization.iextensibledataobject%28v=vs.100%29.aspx
希望有所帮助