默认情况下在Proxy上实现IExtensibleDataObject

时间:2016-03-23 14:02:27

标签: java c# wcf proxy

通过使用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接口吗?

1 个答案:

答案 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

希望有所帮助