C# 领域驱动设计中的用户界面信息

C# 领域驱动设计中的用户界面信息,c#,domain-driven-design,C#,Domain Driven Design,我正在我的项目中实现DDD,有一个名为事件的模型(如生日、聚会等) 事件具有开始和结束日期,因此具有如下模型: public class Event { private DateTime _startDate; private DateTime _endDate; // methods omitted for brevity } 到目前为止,这是好的,我很高兴 现在,在显示开始和结束日期的UI部分,用户可以选择背景颜色。这可以添加为: public class Eve

我正在我的项目中实现DDD,有一个名为
事件
的模型(如生日、聚会等)

事件具有开始和结束日期,因此具有如下模型:

public class Event
{
    private DateTime _startDate;
    private DateTime _endDate;

    // methods omitted for brevity
}
到目前为止,这是好的,我很高兴

现在,在显示开始和结束日期的UI部分,用户可以选择背景颜色。这可以添加为:

public class Event
{
    private DateTime _startDate;
    private DateTime _endDate;
    private Color _dateColor;
}
这可以在UI的每个部分重复多次(位置部分可以有颜色等)

我觉得域中不应该有特定于UI的值,但是我还能在哪里保存它呢

我还担心所有这些额外的领域会污染域名,所以我可以采取如下措施:

public class Event
{
    public EventDates EventDates { get; private set; }
}

public class EventDates
{
    private DateTime _startDate;
    private DateTime _endDate;
    private Color _dateColor;
}
但随后感觉开始/结束日期之类的内容不应该在子实体上,它们是实际事件的核心


有什么想法吗?

我会在考虑可伸缩性和封装性的情况下这样做:

public class Event
{
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public EventDisplayOptions DisplayOptions { get; set; }
}

public class EventDisplayOptions
{
    public Color DateBackgroundColor { get; set; }
    public Color SomeOtherFieldColor {get; set; }
}
  • 所有特定类型的活动,如生日或派对,是否都有相同的颜色

  • 是否需要在同一事件中耦合日期和显示颜色

  • 是否可以使用单独的配置来配置显示颜色,而不是在事件中明确指定


如果不同类型事件的颜色可以完全单独配置,那么我建议将显示颜色相关信息保存在单独的对象中。

我喜欢这个答案,这是一种非常简洁的封装方式!