为什么我得到"修饰符'虚拟'对此项无效"错误?

bra*_*www 10 c# asp.net-mvc model-binding

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

public class Job
{
    public int JobId { get; set; }
    public string Name { get; set; }

    public List<Job> GetJobs()
    {
        List<Job> jobsList = new List<Job>();
        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<Order> Orders { get; set; }
}

public class Head : Person
{
    [Key]
    public override int PersonId { get; set; }
    public Job Job { get; set; }
    public Head()
    {
        Job.Id = 3;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在课堂上的错误Person领域Job:

修饰符'virtual'对此项无效

Jon*_*eet 32

是的,此代码无效:

public virtual Job Job;
Run Code Online (Sandbox Code Playgroud)

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

public virtual Job Job { get; set; }
Run Code Online (Sandbox Code Playgroud)

或者只是一个字段:

// Ick, public field!
public Job Job;
Run Code Online (Sandbox Code Playgroud)

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

  • 如果这个答案帮助你解决了你遇到的问题,你应该考虑[将其标记为答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) . (7认同)
  • @DarinDimitrov我敢肯定乔恩会因失去的潜在代表而受到极大的痛苦 (4认同)