我有几个不同的应用程序,其中我想分享一个C#枚举.我无法弄清楚如何在常规应用程序和WCF服务之间共享枚举声明.
这是情况.我有2个轻量级的C#destop应用程序和一个WCF web服务,它们都需要共享枚举值.
客户1有
Method1( MyEnum e, string sUserId );
Run Code Online (Sandbox Code Playgroud)
客户2有
Method2( MyEnum e, string sUserId );
Run Code Online (Sandbox Code Playgroud)
Webservice有
ServiceMethod1( MyEnum e, string sUserId, string sSomeData);
Run Code Online (Sandbox Code Playgroud)
我最初的目的是创建一个名为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 };
Run Code Online (Sandbox Code Playgroud)
那么....有没有办法在WCF服务和其他应用程序之间共享一个枚举?
我听说有些人说枚举是邪恶的,不应该在Web服务中使用,因为如果分配了一些值,或者枚举标记了Flags属性,服务器和客户端之间可能会出现不匹配.他们还说,暴露枚举的网络服务难以维护,但实际上并没有给我可行的论据.那么根据您的经验,在WCF Web服务中使用枚举的优缺点是什么?