Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改枚举的基础类型是否会破坏wcf合约的更改?_C#_.net_Wcf - Fatal编程技术网

C# 更改枚举的基础类型是否会破坏wcf合约的更改?

C# 更改枚举的基础类型是否会破坏wcf合约的更改?,c#,.net,wcf,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

假设我有这样一个简单的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客户端仍然能够连接到新的服务主机吗

依照

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

这被认为是一个突破性的变化吗

对。这将更改序列化,这将是一个突破性的更改

旧的WCF客户端仍然能够连接到新的服务主机吗


这在很大程度上取决于连接类型,特别是用于映射数据的序列化程序。根据所使用的,这可能有效,也可能无效。

根据MSDN,您是否有任何更改序列化的引用?枚举数据类型通常使用枚举成员名称,而不是数字values@parapurarajkumar这完全取决于所使用的数据契约。通常,枚举将被序列化为字符串,但也有例外,例如JSON序列化程序()