我有一个具有许多列表属性的对象。在我调用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时,上面的代码是否有任何错误或任何风险?如果它是错的,有没有更好的方法来实现这个目标?
答案 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)
集合需要先实例化才能添加成员,因此最好始终在构造函数中实例化集合。