Tôi có vài ứng dụng khác nhau trong số đó tôi muốn chia sẻ một C# enum. Tôi không thể tìm ra cách để chia sẻ một tuyên bố enum giữa một ứng dụng thường xuyên và một dịch vụ WCF.Chia sẻ Enum với Dịch vụ WCF
Đây là tình huống. Tôi có 2 ứng dụng C# destop nhẹ và một webservice WCF mà tất cả đều cần chia sẻ các giá trị enum.
khách hàng 1 có
Method1(MyEnum e, string sUserId);
Khách hàng 2 có
Method2(MyEnum e, string sUserId);
Webservice có
ServiceMethod1(MyEnum e, string sUserId, string sSomeData);
My ban đầu mặc dù là tạo ra một thư viện gọi Common.dll để đóng gói các enum và sau đó chỉ cần tham khảo thư viện đó trong tất cả các dự án trong đó enum là cần thiết. Tuy nhiên, WCF làm cho mọi thứ trở nên khó khăn vì bạn cần đánh dấu enum để nó trở thành một phần không thể thiếu của dịch vụ. Như thế này:
[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 };
Vậy .... Có cách nào để chia sẻ enum giữa dịch vụ WCF và các ứng dụng khác không?
Bạn nên tránh các enums trong các dịch vụ web vì chúng tạo ra các vấn đề tương thích ngược về tinh tế. Xem http://stackoverflow.com/a/788281/52277 –
Không áp dụng trong trường hợp này; các vấn đề tương thích ngược được gọi là do * trả lại * một enum cho một khách hàng (mà rất rõ ràng có thể phá vỡ chúng) so với tham gia một enum như đầu vào. –