我有幾個不同的應用程序,我想分享一個C#枚舉。我無法弄清楚如何在常規應用程序和WCF服務之間共享一個枚舉聲明。與WCF服務共享枚舉
這是情況。我有2個輕量級C#destop應用程序和一個WCF webservice,都需要共享枚舉值。
客戶端1具有
Method1(MyEnum e, string sUserId);
客戶端2具有
Method2(MyEnum e, string sUserId);
Webservice的具有
ServiceMethod1(MyEnum e, string sUserId, string sSomeData);
我最初雖然是創建一個名爲Common.dll封裝枚舉圖書館那麼只需在需要枚舉的所有項目中引用該庫。但是,WCF使事情變得困難,因爲您需要將枚舉標記爲服務的組成部分。像這樣:
[ServiceContract]
[ServiceKnownType(typeof(MyEnum))]
public interface IMyService
{
[OperationContract]
ServiceMethod1(MyEnum e, string sUserId, string sSomeData);
}
[DataContract]
public enum MyEnum{ [EnumMember] red, [EnumMember] green, [EnumMember] blue };
那麼....有沒有辦法在WCF服務和其他應用程序之間共享一個枚舉?
建議避免在Web服務中枚舉,因爲它們會創建微妙的向後兼容問題。請參閱http://stackoverflow.com/a/788281/52277 – 2013-07-21 10:00:50
不適用於此情況;引用的向後兼容性問題是由於將枚舉返回給客戶端(非常明顯可以打破它們),而不是將枚舉作爲輸入。 – 2013-08-03 00:07:28