2012-10-15 17 views
9

मैं नीचे मॉडल के साथ 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; 
    } 
} 

मैं क्षेत्र Job में वर्ग Person में कोई त्रुटि है:

संशोधक 'आभासी' इस आइटम के लिए मान्य नहीं है

उत्तर

26

हाँ, यह कोड अमान्य है:

+०१२३५१६४१०६१
public virtual Job Job; 

यह फ़ील्ड घोषित कर रहा है, और फ़ील्ड आभासी नहीं हो सकते हैं।

public virtual Job Job { get; set; } 

या सिर्फ एक क्षेत्र: आप या तो इसे एक संपत्ति होना चाहता हूँ

// Ick, public field! 
public Job Job; 

(मेरा अनुमान है कि आप पूर्व चाहते हैं, लेकिन दोनों कर रहे हैं वैध सी # है।)

+0

और एक और प्रश्न^क्या आलसी लोड हो रहा है के साथ हो सकता है अगर मैं आभासी कीवर्ड (वर 3) –

+0

हाँ, दोनों सही हैं न रखें। मैं दूसरा चुनता हूं क्योंकि इसमें आलसी लोडिंग शामिल है। सबसे अच्छा –

+5

का सम्मान करता है यदि इस उत्तर में आपको उस समस्या को हल करने में मदद मिली जो आपको हो रही थी [आपको इसे उत्तर के रूप में चिह्नित करना]] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer -काम)। –

0

क्षेत्र को निजी बनाने और इसे सार्वजनिक संपत्ति के साथ बेनकाब करने का सही तरीका है।

//Field 
private Job job; 

//Property 
public virtual Job Job 
    { 
     get { return job; } 
     set { job= value; } 
    } 
संबंधित मुद्दे