2012-08-13 56 views
2

假設我有一個像這樣正在改變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客戶端是否仍然能夠連接到新的服務主機?

Enumeration Types in Data Contracts

一般的數據合同包括枚舉成員的名字,而不是數值

回答

1

這被認爲是一個重大更改?

是的。這將改變序列化,這將是一個突破性的變化。

舊的WCF客戶端是否仍然能夠連接到新的服務主機?

這很大程度上取決於連接的類型 - 特別是哪個序列化器用於映射數據。根據使用的binding,這可能會或可能不會工作。

+0

你有任何引用**改變序列化**,根據MSDN枚舉數據類型通常使用**枚舉成員名稱,而不是數值** – 2012-08-13 16:35:41

+0

@parapurarajkumar它完全取決於正在使用的數據合同。通常,枚舉將被串行化爲一個字符串,但也有例外,例如JSON序列化程序(http://msdn.microsoft.com/zh-cn/library/bb412170.aspx) – 2012-08-13 16:53:34