2014-09-10 51 views
0

我在另一个问题中发现了example。我想知道wat的目的是由Question()方法服务的。这似乎是当创建Question对象时,Answer属性被创建为Answer [s]的List对象。为什么在创建列表对象的模型中创建方法

这是我第一次看到这种技术,作为一名新程序员,这种模式有什么好处?

public class Question 
{ 
    public Question() 
    { 
     this.Answers = new List<Answer>(); 
    } 
    public int QuestionId { get; set; } 
    public string Title { get; set; } 
    public virtual ICollection<Answer> Answers { get; set; } 

} 

public class Answer 
{ 
    public int AnswerId { get; set; } 
    public string Text { get; set; } 
} 

回答

0

我觉得这个模式对于使对象的消耗更容易。也就是说,通过在构造函数中创建Answers列表,可以确保Answers不会为空。它使得使用Question对象更容易。因此,在消费问题的目标代码,你可以做到这一点

foreach (Answer in question.Answers) 
{ 
    ... 
} 

,而无需首先检查是否questions.Answers为null:

if (question.Answers != null) 
{ 
    foreach (Answer in question.Answers) 
    { 
     ... 
    } 
} 
0

我认为,这种技术被用来当你为某些原因不想使用lazy loading。启用延迟加载并正确配置POCO类后,您不必初始化您的收藏导航属性,它会在您首次“触摸”它时自动填充。