WPF:我应该如何重构这个 C# 项目?

WPF: How should I refactor this C# project?

问题

我创造了一个怪物。 169 个列表,169 个复选框,169 个 if 语句。这很糟糕,我想重构它。

这里有一些伪代码来演示:

XAML

<checkbox Name="CheckBox1"...
// etc
<checkbox Name="CheckBox169"/>

代码隐藏

List<ulong> masterList = big_array_of_ulongs;
List<ulong> list1 = array_of_ulongs;
List<ulong> list2 = array_of_ulongs;
// etc
List<ulong> list169 = array_of_ulongs;

// if listX and masterList contain a duplicate element...
// ...listX's corresponding CheckBox is checked.
if (masterList.Any(x => list1.Contains(x))
{
  CheckBox1.IsPressed = true;
}

if(masterList.Any(x => list2.Contains(x))
{
  CheckBox2.IsPressed = true;
}
// etc
if(masterList.Any(x => list169.Contains(x))
{
  CheckBox169.IsPressed = true;
}

解决方案?

我试图将这个混乱减少到几个函数,但我找不到将每个列表与其对应的 CheckBox 相关联的方法。

不胜感激,如果您有更好的想法,请分享,谢谢!

如果这是相同的代码并且您想要快速重构...

for(int i = 1; i < 170; ++i)
{
 String tempName1 = "list" + i;
 List<ulong> temp1 = (List<ulong>)this.GetType().GetProperty(tempName1).GetValue(this, null);
 if (masterList.Any(x => temp1.Contains(x))
 {
  String tempName2 = "CheckBox" + i;
  CheckBox temp2 = (CheckBox)this.GetType().GetProperty(tempName2).GetValue(this, null);
  temp2.IsPressed = true;
 }
}

如果您希望使代码更易于阅读,请使用它,它的效率较低但实际上只需要 169 次迭代就无所谓了