Совместно используемые классы Silverlight в службе RIA, приводящие к ошибкам сборки. Тип «X» уже содержит определение «Y». - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть приложение Silverlight 4, в котором я использую общие классы. В проекте .Web у меня есть класс под названием «X.Shared.cs». Этот класс имеет три строковых свойства. Когда я создаю приложение, оно выдает ошибку, говорящую «Тип« X »уже содержит определение« Y »». Кажется, что свойства в сгенерированном коде в приложении Silverlight рассматриваются как дубликаты. Я пытался очистить свое решение и восстановить, это время от времени помогает, но совершенно непоследовательно.

Кто-нибудь имел опыт в этом вопросе? Возможно, я что-то не так делаю?

Код для общего класса (X.Shared.cs) выглядит следующим образом:

public partial class VideoItem
{
    [Key]
    public String ID
    {
        get;
        set;
    }

    public String ImageURL
    {
        get;
        set;
    }

    public String URL
    {
        get;
        set;
    }
}

Вот снимок экрана обозревателя решений, показывающий созданный общий файл: alt text

Ответы [ 4 ]

3 голосов
/ 22 сентября 2010

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

2 голосов
/ 20 октября 2010

Существует ограничение в генерации кода.Чтобы избежать создания повторяющихся элементов в общих или связанных файлах, участники не могут использовать автоматически реализуемые свойства.Таким образом, чтобы обойти это, вы просто должны определить свой собственный получить и установить.Имейте в виду, что должна быть веская причина не позволять генерации кода RIA создавать участников.Чтобы позволить RIA создавать участников, просто не связывайте и не делитесь своей сущностью с клиентом, а выставляйте ее с помощью метода запроса.

От http://msdn.microsoft.com/en-us/library/ee707359%28VS.91%29.aspx

Избежание дублирующихся участников

При создании прокси-класса сущности возможно, что тот же тип и член уже были определены в клиентском проекте с использованием частичных типов.Возможно, вы определили член в общем коде или в коде, который существует только в клиентском проекте.Службы RIA проверяют существующие элементы перед созданием прокси-класса.Любой член, который уже определен, не будет создан в прокси-классе.[Не включено - члены сущности не должны использовать автоматически реализованные свойства.Разделяемые и связанные файлы с сервера на клиентский проект - единственный способ избежать создания элемента.]

0 голосов
/ 22 сентября 2010

Вы вручную добавили ссылку на файлы X .shared.cs в приложении Silverlight?

Копирование выполняется автоматически веб-клиентскими проектами, подключенными службами RIA.Файлы попадают в скрытую Generated_Code папку в вашем клиентском приложении.

Включите скрытые файлы и посмотрите, есть ли у вас один и тот же файл, дважды включенный в приложение Silverlight.

0 голосов
/ 22 сентября 2010

Вы проверили, что определение класса в X.Shared.cs является частичным?

т.е.

public partial class MyEntity
{
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...