Как обеспечить, чтобы определенные свойства всегда заполнялись при возврате объекта из DAL? - PullRequest
1 голос
/ 24 сентября 2010

У меня есть класс Question, который имеет свойство OptionList, которое является ничем иным, как списком. Вопросы и варианты хранятся в таблицах различий в БД.

Теперь бывают случаи, когда мне нужен только объект Question без его реляционных свойств, то есть свойств, которые являются сущностями, отображающимися в другую таблицу в БД. Таким образом, в этом случае мне не нужно заполнять OptionList.

Но опять же бывают случаи, когда мне нужно заполнить свойство OptionList.

Подход, о котором я сейчас думаю, заключается в использовании двух разных методов.

public Question GetQuestionByID(int qid)

public Question GetQuestionWitOptions(int qid)

Так что, если я вызову второй метод, я обеспечу заполнение OptionList в возвращенном объекте Question.

Это хороший способ достичь такого результата? какие-нибудь альтернативные идеи и предложения?

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Я бы сказал, что это довольно хороший метод.Вы используете определенные имена с очевидной целью и функцией.

Единственное другое предложение, о котором я могу подумать, - это создать второй класс:

public class QuestionExtended : Question
{
    public QuestionExtended(IEnumerable<Option> options) : base()
    {
        OptionList = new List<Option>(options);
    }

    public List<Option> OptionList { get; private set;}
}

Итак, фактическая реализация класса даеточевидный смысл того, что внутри него и что для этого требуется.

0 голосов
/ 24 сентября 2010

То, что у вас есть, возможно, самое простое и дает четкое представление о том, что делает метод.

Единственная альтернатива - написать перегруженную версию:

public Question GetQuestion(int qid, bool withOptions = false)
...