【问题标题】:How to ensure certain properties are always populated when returning object from DAL?从 DAL 返回对象时,如何确保始终填充某些属性?
【发布时间】:2011-04-16 19:09:29
【问题描述】:

我有一个Question 类,它有一个属性OptionList,它只是一个列表。问题和选项存储在 db 的差异表中。

现在有时我只需要没有关系属性的 Question 对象,即映射到数据库中不同表的实体的属性。因此,在这种情况下,我不需要填充 OptionList。

但有时我需要填充 OptionList 属性。

我现在想到的方法是有两种不同的方法。

public Question GetQuestionByID(int qid)

public Question GetQuestionWitOptions(int qid)

因此,如果我调用第二种方法,我会确保 OptionList 填充在返回的 Question 对象中。

这是实现这种结果的好方法吗?有其他的想法和建议吗?

【问题讨论】:

    标签: c# design-patterns data-access-layer


    【解决方案1】:

    你所拥有的可能是最简单的,并且清楚地表明该方法正在做什么。

    唯一的另一种选择是编写重载版本:

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

    【讨论】:

      【解决方案2】:

      我会说这是一个很好的方法。您正在使用具有明显目的和功能的已定义名称。

      我能想到的唯一其他建议是创建第二个类:

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

      那么实际的类实现就其内部的内容和所需的内容给出了明显的含义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-10
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 2014-08-17
        相关资源
        最近更新 更多