Как совместно использовать класс сущности C # с атрибутом DataContract между проектами Silverlight и .Net 4 - PullRequest
1 голос
/ 21 мая 2011

Я хочу создать службу WCF REST, используемую приложением Silverlight, и хочу проверить, существует ли хороший способ разделения класса сущностей между проектом web wcf и проектом Silverlight (это два разных типа CLR),Код по сути одинаков для обоих проектов: класс сущностей, украшенный атрибутом DataContract, и свойства с атрибутом DataMember.

1 Ответ

1 голос
/ 21 мая 2011

То, что я обычно делал и работал достаточно хорошо, - это наличие контрактов с данными в одном из проектов (например, в веб-проекте), а в проектах SL я добавляю их как links (right-нажмите на проект, добавьте существующий элемент, выберите файлы, затем вместо нажатия кнопки «Добавить» выберите выпадающий список и выберите «Добавить как ссылку»).Таким образом, типы разделяются между обоими проектами.

Обратите внимание, что это даже возможно сделать для сервисных контрактов, но поскольку SL не поддерживает синхронные вызовы операций, я обычно использую некоторые директивы компилятора, чтобы иметь возможность совместно использоватьдоговор на обслуживание, как в примере ниже.

[ServiceContract]
public interface ITest
{
#if SILVERLIGHT
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginAdd(int x, int y, AsyncCallback callback, object state);
    int EndAdd(IAsyncResult asyncResult);
#else
    int Add(int x, int y);
#endif
}
...