gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:26 25 4
gpt4 key购买 nike

问题

我创造了一个怪物。 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 次迭代就无关紧要

关于c# - WPF:我应该如何重构这个 C# 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28443731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com