在使用nhibernate时,可以在我的域对象的构造函数中实例化列表吗?

时间:2010-12-21 11:49:04

标签: c# nhibernate list fluent-nhibernate constructor

我有一个具有许多列表属性的对象。在我调用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 个答案:

答案 0 :(得分:2)

没关系。但如果您想要更清洁的方法,请使用:

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 :(得分:1)

它没有任何问题。警告只在那里,因为据我所知,属性可以在派生类中被覆盖。但是,在构造函数中实例化没有问题。

答案 2 :(得分:0)

集合需要先实例化才能添加成员,因此最好始终在构造函数中实例化集合。