Можно ли создавать экземпляры списков в конструкторе объекта моего домена при использовании nhibernate? - PullRequest
1 голос
/ 21 декабря 2010

У меня есть объект, который имеет много свойств, которые являются списками. чтобы избежать необходимости делать нулевые проверки везде, прежде чем я вызову Add, Count, Clear и т. д. , , я думал, что было бы лучше обновить все списки заранее

поэтому внутри объекта Resource в этом случае у меня есть следующий код:

    public Resource()
    {
        Regions = new List<Region>();
        Directs = new List<Direct>();
    }

   public virtual IList<Direct> Directs { get; set; }
   public virtual IList<Region> Region{ get; set; }

я получаю предупреждение в Visual Studio: вызывает виртуальные методы в конструкторе

Есть ли что-то неправильно или какой-либо риск для кода выше при использовании nhibernate ?? если это неправильно, есть ли лучший способ достижения этой цели?

Ответы [ 3 ]

2 голосов
/ 21 декабря 2010

Отлично.Но если вы хотите более чистый подход, используйте:

public Resource()
{
    _Regions = new List<Region>();
    _Directs = new List<Direct>();
}

IList<Direct> _Directs;
public virtual IList<Direct> Directs { get { return _Directs; } }

IList<Region> _Regions;
public virtual IList<Region> Regions { get { return _Regions; } }

и сопоставьте с access="nosetter.pascalcase-underscore" (если вы используете мое соглашение об именах; проверьте таблицы в http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-property для других альтернатив)

1 голос
/ 21 декабря 2010

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

0 голосов
/ 21 декабря 2010

Необходимо создать экземпляр коллекции, прежде чем вы сможете добавить в него члена, поэтому лучше всегда создавать экземпляры коллекций в конструкторе.

...