为什么我得到“修饰符’虚拟’对此项无效”错误?

我正在尝试使用下面的模型创建mvc应用程序:(代码很大。我认为这对你来说更容易理解)

public class Job { public int JobId { get; set; } public string Name { get; set; } public List GetJobs() { List jobsList = new List(); jobsList.Add(new Job { JobId = 1, Name = "Operator" }); jobsList.Add(new Job { JobId = 2, Name = "Performer" }); jobsList.Add(new Job { JobId = 3, Name = "Head" }); return jobsList; } } public class Person { public virtual int PersonId { get; set; } public string FullName { get; set; } public int JobId { get; set; } public virtual Job Job; public string Phone { get; set; } public string Address { get; set; } public string Passport { get; set; } [DataType(DataType.MultilineText)] public string Comments { get; set; } } public class PersonPaidTo : Person { [Key] public override int PersonId { get; set; } public virtual List Orders { get; set; } } public class Head : Person { [Key] public override int PersonId { get; set; } public Job Job { get; set; } public Head() { Job.Id = 3; } } 

我在类字段Person中有错误Job

修饰符’virtual’对此项无效

是的,此代码无效:

 public virtual Job Job; 

那是宣告一个字段 ,字段不能是虚拟的。 你要么想要它是一个属性:

 public virtual Job Job { get; set; } 

或者只是一个字段:

 // Ick, public field! public Job Job; 

(我的猜测是你想要前者,但两者都是有效的C#。)

将字段设为私有并使用公共属性公开的正确方法。

 //Field private Job job; //Property public virtual Job Job { get { return job; } set { job= value; } }