虚拟成员的语法

Cal*_*lin 8 c# syntax

考虑以下用c#.net 4.0编写的类(通常在nhibernate类中找到):

public class CandidateEntity : EntityBase
{
    public virtual IList<GradeEntity> Grades { get; set; }

    public CandidateEntity()
    {
         Grades = new List<GradeEntity>(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

这一行得到了一个有根据的警告"构造函数中的虚拟成员调用".我应该在哪里初始化这个集合?

问候,

Mat*_*int 11

支持领域是一种方式.另一种是使用私人二传手.这在nHibernate中运行良好.

public virtual IList<GradeEntity> Grades { get; private set; }

public CandidateEntity()
{
     Grades = new List<GradeEntity>();
}
Run Code Online (Sandbox Code Playgroud)


Vad*_*dim 9

使用支持字段并初始化构造函数中的支持字段.或者将课程密封.

private IList<GradeEntity> _grades

public virtual IList<GradeEntity> Grades
{
   get { return _grades; }
   set { _grades = value; }
}

public CandidatesEntity()
{
   _grades = new List<GradeEntity>();
}
Run Code Online (Sandbox Code Playgroud)