如何确保从DAL返回对象时始终填充某些属性?
问题描述:
我有一个Question
类,它有一个属性OptionList
,这不过是一个列表。问题和选项存储在数据库中的差异表中。如何确保从DAL返回对象时始终填充某些属性?
现在有些时候,我只需要Question对象而没有它的关系属性,也就是映射到db中不同表的实体的属性。因此在这种情况下,我不需要填充OptionList。
但是,然后再次有时我需要填充OptionList
属性。
我现在想的方法是有两种不同的方法。
public Question GetQuestionByID(int qid)
public Question GetQuestionWitOptions(int qid)
因此,如果我打电话给第二个方法,我确保OptionList填充到返回的Question对象中。
这是实现这样一个结果的好方法吗?任何备用的想法和建议?
答
我会说这是一个不错的方法。您正在使用具有明显目的和功能的定义名称。
唯一的其他建议,我能想到的是创建第二类:
public class QuestionExtended : Question
{
public QuestionExtended(IEnumerable<Option> options) : base()
{
OptionList = new List<Option>(options);
}
public List<Option> OptionList { get; private set;}
}
所以后来的实际类的实现提供了一个明显的意义,什么是它里面的,什么是需要它。
答
你有什么可能是最简单的,并清楚地说明方法在做什么。
的唯一选择就是写一个重载的版本:
public Question GetQuestion(int qid, bool withOptions = false)