【发布时间】:2018-12-22 14:17:38
【问题描述】:
我有一个类(Winforms 应用程序),它监视一组实际开关的状态,并将它们的打开/关闭状态存储在两个数组中。一个数组是二进制 (0,1) 格式的状态,另一个是字符串(“打开”、“关闭”)格式。 UI 使用字符串格式,内部计算使用两种格式,所以我需要两个数组。
我一直在努力寻找链接这两个数组的最佳方式,这样如果应用程序设置了任一数组的一个元素,另一个数组的相应元素会同时自动设置为正确的格式。
我考虑过使用某种绑定,但显然 Winforms 不会在属性之间进行绑定,只有 WPF。我还考虑过使用每个属性的 Set 来设置其他元素的逻辑(见下文),但我不知道如何配置 Set 以访问单个数组元素(可能是索引器,尽管我不确定如果那是正确的道路,因为我对他们一无所知)。
这是我目前的代码,当然它不起作用,因为它不知道如何将数组与逻辑语句中的 int 等同起来。
任何有关解决方案的帮助将不胜感激。谢谢。
public class SystemStatus
{
public string[] strStatus
{
get
{
return strStatus;
}
set
{
strStatus = value;
binStatus = value == "closed" ? 1 : 0;
}
}
public int[] binStatus
{
get
{
return binStatus;
}
set
{
binStatus = value;
strStatus = value == 1 ? "closed" : "open";
}
}
【问题讨论】:
-
您的
strStatus是数组,因此value也是数组,但在binStatus = value == "closed" ? 1 : 0;中您将其视为字符串。 -
是的,这就是为什么我说“当然它不起作用,因为它不知道如何将数组与逻辑语句中的 int 等同起来。”正如一位伟大的哲学家曾经说过的那样,“(重述问题)!=(提供解决方案)”。 :)
-
老实说,我不明白你真正需要什么,但我猜你有 几个 开关,你需要同时存储
string和int价值观。我认为你需要Dictionary或DataTable。 -
当T是你的“Switch”对象时,你应该使用一个数组
,并且每个对象都有一个字符串属性和一个字节属性来表示状态,你也可以添加一个开关ID/mac的属性地址等... -
再次,我说“监控一组实际开关的状态,并将它们的打开/关闭状态存储在两个数组中”,所以是的,有多个开关。而且我不确定拥有一系列开关与此有什么关系。我只想维护两个状态数组。