if (Settings.EnableColors)
{
if (Settings.EnableRed) { content.Add("Color red", Color.Red);}
if (Settings.EnableGreen) { content.Add("Color green", Color.Green);}
if (Settings.EnableBlue) { content.Add("Color blue", Color.Blue);}
if (Settings.EnableYellow) { content.Add("Color yellow", Color.Yellow);}
}
该列表包含1000多个条目,如果为true或false,则必须每隔几分钟检查一次“if语句”。 是否还有其他方法可以将它们保存在配置文件列表或其他内容中,并且该列表可以按需加载...? 或者更快的方法来检查它们?
答案 0 :(得分:2)
好吧,您可以使用所有 seseings创建一个词典,并使用null
值标记为已禁用:
// if value is null then color is not enabled
private readonly Dictionary<string, Color?> _colors = new Dictionary<string, Color?>()
{
{ "red", Color.Red}, // is enabled
{ "green", null} // is disabled
};
然后循环遍历这个字典的方法:
if (!Settings.EnableColors) { return; }
foreach(var kv in _colors)
{
if(kv.Value.HasValue) { content.Add($"Color {kv.Key}", kv.Value);}
}
或者您可以使用事件:
public class ColorChangedEventArgs
{
public Color Color { get; set; }
public bool IsEnabled { get; set; }
}
public event EventHandler<ColorChangedEventArgs> ColorSettingsChanged;
然后从某种方法订阅它:
ColorSettingChanged += (sender, args) => // ... use args here to access new value
要发射事件,您只需致电:
ColorSettingChanged(this, new ColorChangedEventArgs{ Color = Color.Red, IsEnabled = true});
所以主要图片是:
每当用户更改设置时,都会触发此ColorSettingsChanged
事件,并且在处理程序中,可以通过此ColorChangedEventArgs
实例访问新设置并采取相应措施。