对于我的 WPF 视图,我有几个对象实现了用于显示目的的单个接口。选择一个时,我想根据视图上选择的类型和选项调用某个方法。我已经为每种类型的对象提供了重载。我尝试使用通用方法,但它证明对象差异太大而无法使用。
为了可维护性,我试图避免与大型 if 语句的控制耦合。
使用单一接口是我出错了,还是有一种有趣的可维护方式来做到这一点?
我有一个包含 IDisplayableObject 集合的数据网格。
public interface IDisplayableObject
{
string Name { get; set; }
string ID { get; set; }
}
现在,我选择了第一个答案。
public void ExportDashed(string path, IDisplayableObject folder)
{
if (folder is TestFolder)
{
IndentationTraverse(folder as TestFolder);
}
else if (folder is UserStory)
{
IndentationTraverse(folder as UserStory);
}
_excelManipulator.Save(path);
}
我想避免 if 语句。对于这种情况,我通常使用映射到 Action 的字典,但我还有另一种方法
public void ExportShiftingColumns(string path, IDisplayableObject folder)
{
if (folder is TestFolder)
{
ColumnShiftTraverse(folder as TestFolder);
}
else if (folder is UserStory)
{
ColumnShiftTraverse(folder as UserStory);
}
_excelManipulator.Save(path);
}
因此,我需要执行操作,导出虚线或导出移位列,然后我需要决定要导出哪种类型。
从代码中可以看出,重复不是一件好事,我想尽可能地避免它。对于这个应用程序,这没什么大不了的,但对我个人的学习来说更重要。