我在这里有点困惑。我有一个场景,根据选择的选项,只有我的 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
还是您有更好的设计?