Я не знаю, возможно ли это, но я хочу иметь возможность ссылаться на перечисления из моей службы WCF на стороне клиента. У меня есть один основной проект, и в этом проекте перечисления:
public enum StatusType
{
Ok = 1,
Error = 2,
Unknown = 0
}
public enum DirectionType
{
None = 0,
ToSystem = 1,
FromSystem = 2
}
У меня есть один сервисный проект, использующий базовый проект, и он устанавливает типы перечислений из базового проекта, например:
[DataContract()]
static class EnumHelper
{
public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
{
List<Type> knownTypes = new List<Type>();
// Add any types to include here.
knownTypes.Add(typeof(StatusType));
knownTypes.Add(typeof(DirectionType));
return knownTypes;
}
}
А в интерфейсе:
[ServiceKnownType( typeof(EnumHelper))]
[ServiceContract( SessionMode = SessionMode.Allowed)]
public interface HandlerService
когда я вызываю метод, который принимает или возвращает enum, он работает нормально, но мне нужно обратиться к базовому проекту в клиентском проекте, чтобы использовать клиентскую часть enums, я хотел бы сделать это из Сервиса если это возможно.
Я попытался установить перечисления в базовом проекте на
[DataContract]
public enum StatusType
{
[EnumMember]
Ok = 1, /*!<Done with no error */
[EnumMember]
Error = 2, /*!<Done with error */
[EnumMember]
Unknown = 0, /*!<No data registered, default value */
}
без эффекта.
Я хочу использовать это в моем клиентском проекте следующим образом:
Либо как client.StatusType.Ok, либо Servicereference1.StatusType.Ok, либо что-то в этом роде.
обратите внимание, как Core.StatusType.Ok
Причина, по которой я этого хочу, заключается в том, что Служба должна использоваться в разных проектах, и мы не хотим, чтобы все зависели от общей библиотеки dll, если возможно ее пропустить. Я использую привязку net.tcp для службы. Надеюсь, это было понятно, спасибо за любую помощь:)