Генерация кода в проекте Silverlight WCF RIA Services

У меня есть проект silverlight 4, который использует службы wcf ria для подключения к серверу. У меня есть общедоступный класс, который мне нужно использовать как на клиенте (silverlight), так и на сервере. Как лучше всего этого добиться?

Я пробовал использовать соглашение о файлах .shared.cs на сервере, а также связанный файл (оригинал находится на сервере). Клиент подумал, что существует повторяющийся класс, поэтому я изменил его на частичный класс (я бы предпочел не делать этого). Затем он пожаловался на повторяющиеся свойства, поэтому я попробовал решение для этот вопрос о переполнении стека. Проблема, с которой я столкнулся при использовании этого решения, заключается в том, что я не могу получить доступ к моим перечислениям, которые находятся в исходном классе на сервере.

Я также попытался создать проект библиотеки классов, на который могут ссылаться оба других проекта (клиент и сервер Silverlight). Проблема заключается в том, чтобы найти тип создаваемого проекта, на который могут ссылаться оба проекта. Silverlight жалуется на проекты, отличные от Silverlight, и наоборот.


person Ben    schedule 12.04.2012    source источник
comment
Я много использовал связанные файлы, и они отлично работали. Есть ли у вас техническая причина не использовать их?   -  person Andrew    schedule 13.04.2012
comment
Я пробовал использовать их, но они не позволяют мне использовать мои перечисления, расположенные в общем файле cs в проекте silverlight.   -  person Ben    schedule 13.04.2012


Ответы (3)


Рассматривали ли вы возможность использования инструментов расширения переносимой библиотеки?

Цитируя здесь, проект Portable Class Library позволяет вам писать и создавать управляемые сборки, которые работают на нескольких платформах .NET Framework.

person Rus    schedule 13.04.2012

Я думаю, что лучшим решением здесь было бы создать новый проект в решении (вы можете называть его Helpers, Common и т. Д.) И добавить ссылку как в клиентский, так и в серверный проекты. Таким образом, вы будете использовать один и тот же класс в обоих из них, и если вы измените структуру класса, это повлияет на оба проекта.

person Dovydas Navickas    schedule 13.04.2012
comment
Я пробовал это, но не могу найти подходящий тип проекта для вспомогательного проекта. Проект silverlight не может ссылаться на проект библиотеки классов, а серверный проект не может ссылаться на проект библиотеки классов silverlight. - person Ben; 13.04.2012

Я не уверен, откуда взялась ваша проблема (что вы имеете в виду под невозможностью доступа к своим перечислениям?), Однако вам может быть полезно знать, что .NET поддерживает функцию под названием совместное использование сборок, предназначенное для совместного использования некоторых базовых напечатайте через silverlight и .net. Просто имейте в виду, что вы должны ссылаться на сборку Silverlight, а не на проект silverlight. Если это нарушит порядок компиляции, добавьте также ссылку на "поддельный" проект в ваш файл csproj, например:

<ProjectReference Include="..\MySilverlightSharedProject.csproj">
  <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>

как указано в документации здесь

person mCasamento    schedule 13.04.2012