Как получить доступ к полевому поле базового класса, используя свободные NHIBERNATE?

StackOverflow https://stackoverflow.com/questions/2898389

Вопрос

Как установить стратегию доступа в класс сопоставления, чтобы указать на поле Base _Photos?

public class Content
{
  private IList<Photo> _photos;
  public Content()
  {
     _photos = new List<Photo>();
  }
  public virtual IEnumerable<Photo> Photos
  {
    get
    {
      return _photos;
    }
  }

  public virtual void AddPhoto() {...}
}

public class Article : Content
{
  public string Body {get; set;}

}

В настоящее время я использую следующее, чтобы попытаться найти поле поддержки, но исключение брошено, так как его не найдено.

public class ArticleMap : ClassMap<Article>
{
   HasManyToMany(x => x.Photos)    
   .Access.CamelCaseField(Prefix.Underscore)  //_photos
   //...
}

Я попытался переместить резервное поле _Photos непосредственно в класс и доступом работает. Так как я могу получить доступ к полевому поле базового класса?

Это было полезно?

Решение

Хорошо, нашел ответ. Использование свободного Nhibernate версии 1.1 (выпущено 23 мая 2010 г.) Вы можете использовать метод раскрытия члена:

Reveal.Member<YourEntity>("_privateField");

Так что вышеупомянутый класс сопоставления сейчас становится:

public class ArticleMap : ClassMap<Article>
{
   HasManyToMany<Photo>(Reveal.Member<Article>("_photos"))
   //...
}

Детали выпуска: http://fluentnhibernate.org/blog/2010/05/23/feature-focus-fields.html.

Другие советы

Попробуйте изменить доступность _photos защищено:

protected IList<Photo> _photos;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top