正在改变wcf合约的枚举变化的基础类型?

时间:2012-08-13 16:26:14

标签: c# .net wcf

假设我有一个像这样的简单wcf服务

[DataContract]
public enum VMType : int
{
    [EnumMember]
    Unknown = 0,

    [EnumMember]
    Virtual = 1,

    [EnumMember]
    Physical = 2,
}

[DataContract]
public class ClientRequest
{
    [DataMember]
    public string Code { get; set; }

    [DataMember]
    public VMType VMType { get; set; }
}

[ServiceContract]
public interface IService
{
    [OperationContract]
    int GetStatus(ClientRequest request);
}

如果将枚举VMType更改为

public enum VMType : byte
{

这被认为是一个重大变化吗?旧的WCF客户端是否仍能连接到新的服务主机?

根据Enumeration Types in Data Contracts

  

通常,数据协定包括枚举成员名称,而不是数值

1 个答案:

答案 0 :(得分:1)

  

这被认为是一个重大变化吗?

是。这将改变序列化,这将是一个重大变化。

  

旧的WCF客户端是否仍能连接到新的服务主机?

这在很大程度上取决于连接类型 - 特别是,哪个串行器用于映射数据。根据所使用的binding,这可能有效,也可能无效。