我有一个名为“Set”的实体,其中包含卡片。有时我想查看整个卡片及其内容(卡片视图),有时我只想知道Set(表格视图)中有多少张卡片。在我的努力让事情变得干燥,我决定尝试并重新使用我SetDto类有多个构造是这样的:带有多个构造函数的单个DTO - 这看起来像是一个合适的解决方案吗?
public class SetDto
{
public SetDto()
{
Cards = new List<CardDto>();
}
// Called via SetDto(set, "thin")
public SetDto (Set set, string isThin)
{
var setDto = new SetDto()
{
SetId = set.SetId,
Title = set.Title,
Details = set.Details,
Stage = set.Stage,
CardCount = set.Cards.Count
};
return setDto;
}
// Called via SetDto(set)
public SetDto(Set set)
{
SetId = set.SetId;
UserId = set.UserId;
Title = set.Title;
Details = set.Details;
FolderId = set.FolderId;
Stage = set.Stage;
IsArchived = set.IsArchived;
Cards = new List<CardDto>();
foreach (Card card in set.Cards)
{
Cards.Add(new CardDto(card));
}
}
/// property definitions
我本来对套两种不同的DTO - ThinSetDto和FullSetDto - 但这似乎是混乱和更难以测试。上述解决方案看起来不错,还是我打破了已知的最佳做法?感谢您的时间!
如果两个不同的类似乎messey,如何传递一个字符串,而不用绕过一个构造函数到另一个感觉? – LukeHennerley 2013-03-14 16:26:16
为什么不使用继承? – MattW 2013-03-14 16:26:53
根本不对......感谢下面的答案。完全不熟悉编程,这有助于很多。欢呼:) – RobVious 2013-03-14 16:40:48