Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Почему свойства навигации должны быть общедоступными для создания прокси?

Автор вопроса: MartijnОтветов: 1

На странице http://msdn.microsoft.com/en-us/library/dd468057.aspx Я читал, что все свойства навигации, для которых я хотел бы иметь прокси-сервер отслеживания изменений, должны быть public и virtual. Насколько я понимаю, CLR динамически создает подклассы моих POCO и повторно реализует свойства для обеспечения запрошенного поведения.

Для этого я понимаю, что свойство должно быть virtual и что оно должно иметь доступность protected или выше. Однако, если я хочу использовать их для удобства в сборке, но не хочу раскрывать их, я предпочитаю, чтобы они не были public. Что приводит меня к двум вопросам.

  1. (насколько я понимаю, что происходит), почему среда выполнения требует, чтобы свойства были public, а не protected или internal?

  2. (для моей реальной ситуации) существуют ли какие-либо обходные пути, чтобы скрыть свойство навигации, но при этом сохранить поведение отслеживания изменений?

entity-frameworkpocoproxy-classes

Ответы

Ответ 1 · рейтинг 2 · Danny Varod

Свойства должны быть общедоступными (и виртуальными) ИЛИ защищенными (и виртуальными) для работы прокси.

Прокси-серверы не определены в вашей сборке, поэтому внутренние не будут работать.

Private не будет работать по понятным причинам (прокси наследуются от ваших классов).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы