我有一些模型,我想使它们可序列化,以便将它们用于休息服务。
目前,我们的实施非常精细。输出可以从ApiController到ApiController不同。我无法清除或删除模型的可枚举。这应该由DTO控制。
我看到很多评论认为DTO已经过时了。但是,我认为模型和演示之间脱钩的想法非常好。
目前这将导致我想要减少的许多物体。
我发现只有一些像memento这样的设计模式建议,但不确定这是否正确。我也找到了使用Mixins的建议但不确定它是否有助于解决我的问题。
我确信有很多我没看到的最佳做法,因为我只是在搜索错误的条款。
仅使用一些伪代码来澄清我的意思。
public class PersonEntity
{
public string Name { get; set; }
public int Age { get; set; }
public string Details { get; set; }
public List<string> LotsOfSubInformation { get; set; }
}
[Serializable]
public class PersonWithoutSubDtoXml
{
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
[XmlElement(ElementName = "Age")]
public int Age { get; set; }
[XmlElement(ElementName = "Details")]
public XmlCDataSection Details { get; set; }
}
[Serializable]
public class PersonDtoXml
{
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
[XmlElement(ElementName = "Age")]
public int Age { get; set; }
[XmlElement(ElementName = "Details")]
public XmlCDataSection Details { get; set; }
[XmlArray("LotsOfSubInformation")]
[XmlArrayItem("Information")]
public string[] LotsOfSubInformation { get; set; }
}
[Serializable]
public class PersonDtoJson
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("age")]
public int Age { get; set; }
[JsonProperty("details")]
public string Details { get; set; }
[JsonProperty("lotsOfSubInformation")]
public string[] LotsOfSubInformation { get; set; }
public static PersonDtoJson Create(PersonEntity source)
{
return new PersonDtoJson
{
Age = source.Age,
Details = source.Details,
Name = source.Name,
LotsOfSubInformation = source.LotsOfSubInformation.ToArray()
};
}
}
[Serializable]
public class PersonWithoutSubDtoJson
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("age")]
public int Age { get; set; }
[JsonProperty("details")]
public string Details { get; set; }
public static PersonWithoutSubDtoJson Create(PersonEntity source)
{
return new PersonWithoutSubDtoJson
{
Age = source.Age,
Details = source.Details,
Name = source.Name
};
}
}