Mam kilka różnych aplikacji, wśród których chciałbym współdzielić wyliczenie C#. Nie wiem, jak podzielić deklarację enum między zwykłą aplikacją a usługą WCF.Udostępnianie Enum z usługą WCF
Oto sytuacja. Mam 2 lekkie aplikacje C# destop i usługę WCF, które wszystkie muszą udostępniać wartości wyliczeniowe.
Client 1 ma
Method1(MyEnum e, string sUserId);
Klient 2 posiada
Method2(MyEnum e, string sUserId);
WebService
ServiceMethod1(MyEnum e, string sUserId, string sSomeData);
moim początkowym chociaż było stworzenie biblioteki o nazwie Common.dll do hermetyzacji i enum następnie odwołaj się do tej biblioteki we wszystkich projektach, w których potrzebne jest wyliczenie. Jednak WCF sprawia, że rzeczy trudne, ponieważ trzeba znaczników wyliczenia, aby być integralną częścią usługi. W ten sposób:
[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 };
Więc .... Czy istnieje sposób na dzielenie się wyliczeniem między usługą WCF a innymi aplikacjami?
Zaleca się unikanie wyliczeń w serwisach WWW, ponieważ tworzą one subtelne problemy kompatybilne wstecz. Zobacz http://stackoverflow.com/a/788281/52277 –
Nie dotyczy w tym przypadku; wymienione problemy ze zgodnością z poprzednimi wersjami są spowodowane * zwróceniem * wyliczenia do klienta (co bardzo wyraźnie może je złamać) w porównaniu z wyliczeniem jako danych wejściowych. –