【发布时间】:2009-10-24 13:14:13
【问题描述】:
这似乎在我的代码中出现了很多,我想知道是否有某种方法可以删除 switch 语句,或者是否有更优雅的方法?
public class MetaData
{
public string AlbumArtist { get; set; }
public string AlbumTitle { get; set; }
public string Year { get; set; }
public string SongTitle { get; set; }
public static MetaData CreateMetaDataFrom(IEnumerable<TextFrame> textFrames)
{
var metaData = new MetaData();
foreach (var frame in textFrames)
{
switch (frame.Descriptor.ID)
{
case "TPE1":
metaData.AlbumArtist = frame.Content;
break;
case "TALB":
metaData.AlbumTitle = frame.Content;
break;
case "TIT2":
metaData.SongTitle = frame.Content;
break;
case "TYER":
metaData.Year = frame.Content;
break;
}
}
return metaData;
}
}
【问题讨论】:
-
我非常喜欢通过使用多态性、策略模式、使用委托查找表等来删除代码中的条件。在适当的上下文中使用时,每一个都是优雅的解决方案.也就是说,我相信这里最好的答案似乎是由 asstander 提供的。假设您有一个有限的已知用户界面值列表,最合适的解决方案是直接连续设置结构的值,或者更好的解决方案可能是使用数据绑定。这很简单,但似乎最合适。
标签: c# .net refactoring switch-statement