我有一個名爲「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