C# 更改枚举的基础类型是否会破坏wcf合约的更改?
假设我有这样一个简单的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
[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序列化程序()