2014-09-10 2 views
0

Я нашел это example в другом вопросе. Я был удивлен, что цель wat была удовлетворена методом Question(). Кажется, что когда объект Question создан, свойство Answer создается как объект List of Answer [s].Зачем создавать метод в модели, которая создает объект списка

Это первый раз, когда я видел эту технику, как новый программист, в чем преимущество этого шаблона?

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

Я нахожу этот шаблон полезным для облегчения потребления предмета. I.e., создав в конструкторе список «Ответы», гарантируется, что ответы никогда не являются нулевыми. Это упрощает работу с объектом Question. Так, в коде, который потребляет объект вопрос, вы можете сделать это

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

без первой проверки, если questions.Answers равно нулю:

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

Я предполагаю, что этот метод используется, когда для вас по какой-то причине не хотят использовать lazy loading. Когда ленивая загрузка включена и классы POCO настроены правильно, вам не нужно инициализировать свойство навигации для коллекции, оно будет автоматически заполнено после того, как вы впервые коснетесь его.

Смежные вопросы