Tengo pocas aplicaciones diferentes entre las que me gustaría compartir una Cum enum. No puedo entender cómo compartir una declaración enum entre una aplicación normal y un servicio WCF.Compartiendo Enum con WCF Service
Aquí está la situación. Tengo 2 aplicaciones ligeras Ctop destop y un servicio web WCF que todos necesitan compartir valores enum.
cliente 1 tiene
Method1(MyEnum e, string sUserId);
cliente 2 tiene
Method2(MyEnum e, string sUserId);
servicio web tiene
ServiceMethod1(MyEnum e, string sUserId, string sSomeData);
Mi inicial, aunque era crear una biblioteca llamada Common.dll para encapsular la enumeración y luego solo haga referencia a esa biblioteca en todos los proyectos donde se necesita la enumeración. Sin embargo, WCF hace las cosas difíciles porque necesita marcar la enumeración para que sea una parte integral del servicio. De esta manera:
[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 };
Así que .... ¿Hay una manera de compartir una enumeración entre un servicio WCF y otros applictions?
Se recomienda evitar las enumeraciones en los servicios web porque crean sutiles problemas compatibles con versiones anteriores. Ver http://stackoverflow.com/a/788281/52277 –
No se aplica en este caso; los problemas de compatibilidad con versiones anteriores a los que se hace referencia se deben a * devolver * una enumeración a un cliente (lo que claramente puede romperlos) versus tomar una enumeración como entrada. –