【发布时间】:2013-09-06 11:23:53
【问题描述】:
我在这里有点困惑。我有一个场景,根据选择的选项,只有我的 DTO 的某些属性有效。所以,我想出了下面的设计。
[DataContract]
class MyDTO
{
[DataMember]
public BaseData CommonData { get; set; }
[DataMember]
public Options AvailableOptions { get; set; }
[DataMember]
public Option1Data Data1 { get; set; }
[DataMember]
public Option2Data Data2 { get; set; }
}
[DataContract]
public class BaseData
{
[DataMember]
public int BaseVar1 { get; set; }
}
[DataContract]
public enum Options
{
[EnumMember]
Option1,
[EnumMember]
Option2
}
[DataContract]
public class Option1Data
{
[DataMember]
public string Option1Var1 { get; set; }
}
[DataContract]
public class Option2Data
{
[DataMember]
public string Option2Var1 { get; set; }
}
但显然MyDTO 类违反了OCP 原则。每当在 Options 枚举中添加一个新选项时,我需要更改 MyDTO 以添加一个属性来检索该选项的数据。
在这种情况下可以更改MyDTO 还是您有更好的设计?
【问题讨论】:
标签: c# design-patterns dto