为什么我得到“修饰符’虚拟’对此项无效”错误?
我正在尝试使用下面的模型创建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; } }