Добавление типа enum, используемого в службе WCF и приложении Windows Phone 7 - PullRequest
3 голосов
/ 29 апреля 2011

Я разрабатываю приложение для Windows Phone 7, которое использует службу WCF.

Мне нужно использовать в обоих проектах следующий код:

public enum GameType
{
    MonoPlayer = 1,
    MultiPlayer = 2
}

Я уверен, что долженЯ не определяю это перечисление в обоих проектах, поэтому я выясняю, что мне нужно найти другое решение.

Я думаю, что мне нужно использовать третий проект, в который я должен поместить enum.

Делаете ли выесть лучший подход?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2011

WCF использует контракты, поэтому перечисление должно быть оформлено как контракт.

Например, вы можете иметь:

[DataContract]
public enum GameType
{
    [EnumMember]
    MonoPlayer = 0,

    [EnumMember]
    MultiPlayer = 1
}

Файл enum помещен в отдельный проектчто он может использоваться клиентом и службой WCF.

Затем в контракте на обслуживание (т. е. в интерфейсе службы WCF) вы должны объявить перечисление как «известный тип», например:

[ServiceContract]
[ServiceKnownType(typeof(GameType))]
public interface IMyService {...}

Это должно сделать это!

1 голос
/ 29 апреля 2011

То, что я обычно делаю, - это отдельный проект, в котором есть все классы и перечисления, имеющие тип логики домена, к которому вы обращаетесь (например, GameType), который используется в других проектах и ​​называется: Xpto.Common

Затем я ссылаюсь на этот общий проект в обоих моих проектах.Это делает классы и перечисления многократно используемыми и обеспечивает упорядоченность.

0 голосов
/ 29 апреля 2011

Очевидно, что повторно используемые классы должны быть помещены в отдельный проект.

...