Почему NHibernate требует "защищенной внутренней" видимости для авто свойств? - PullRequest
5 голосов
/ 24 мая 2011

Раньше можно было сопоставлять автоматические свойства с частными установщиками с помощью NHibernate, но, начиная с версии 3.2, это уже не так (не без замены средства проверки сущностей), см. Обсуждение NH dev .

Я понимаю требование protected, но почему internal?Это нарушает инкапсуляцию и просто чувствует себя грязным.

Является ли единственная альтернатива, возвращающаяся к резервным полям?

ОБНОВЛЕНИЕ : Смущает, но верно, оказывается, internalне требуется.Таким образом, возникает проблема между возвращением к резервным полям или использованием защищенного установщика и избеганием значений настроек в конструкторе или , когда существует риск трудно обнаружить ошибки .Спасибо Фабио и @Nexus за указание на мою ошибку.

Ответы [ 3 ]

6 голосов
/ 25 мая 2011

Майкл,

public string Foo { get; protected set; } все еще должно быть возможным, обсуждение разработки о public string Foo { get; private set; }, что может привести к ошибкам при использовании ленивых свойств.

1 голос
/ 22 декабря 2011
public class Class{

    public string Foo { get; private set; }

}

Property(class=> class.Foo);

Затем вам необходимо отключить проверку прокси в вашей конфигурации:

Config.Proxy(p => {p.Validation = false});

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

NHibernate довольно грязный.Он использует отражение для доступа к свойствам и полям.

Вы даже можете сопоставить private свойства и поля как точки данных.

NHibernate полностью игнорирует видимость элементов, к которым он должен получить доступ.

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