这是我的代码
public bool DisplayError1
{
get { return _displayError1; }
set
{
if (value.Equals(_displayError1)) return;
_displayError1 = value;
NotifyPropertyChanged();
}
}
private bool _displayError2 = false;
public bool DisplayError2
{
get { return _displayError2; }
set
{
if (value.Equals(_displayError2)) return;
_displayError2 = value;
NotifyPropertyChanged();
}
}
private bool _displayError3 = false;
public bool DisplayError3
{
get { return _displayError3; }
set
{
if (value.Equals(_displayError3)) return;
_displayError3 = value;
NotifyPropertyChanged();
}
}
private bool _displayError4 = false;
public bool DisplayError4
{
get { return _displayError4; }
set
{
if (value.Equals(_displayError4)) return;
_displayError4 = value;
NotifyPropertyChanged();
}
}
这些是我的属性集。我需要将此属性转换为一种方法,以获取我需要的确切方法
作为示例
void display(string property){}
然后我需要在主要方法中获得确切的依据
display(displayerror)
操作方法
我实现了这段代码
public bool DisplayRightOne(bool display)
{
bool[] array = new bool[] {DisplayError,DisplayError1,DisplayError2,DisplayError3,DisplayError4,DisplayError5,DisplayError6,DisplayError7,DisplayError8 };
int i;
for( i=0;i<array.Length; i++)
{
if (display == array[i])
{
return array[i] = true;
}
}
return true;}
我使用此方法
DisplayRightOne(DisplayError);
但未将DisplayError属性设置为true。请给我建议的问题在哪里
答案 0 :(得分:0)
我要做的第一个更改是剪切重复的代码。例如,您所有的属性设置器都执行相同的操作,但是具有不同的变量:
set
{
if (value.Equals(<VARIABLE_NAME>))
return;
<VARIABLE_NAME> = value;
NotifyPropertyChanged();
}
您可以将其变成一种方法,并用它替换所有的设置器:
set { SetProperty(ref <VARIABLE_NAME>, value); }
...
void SetProperty<T>(ref T variable, T value)
{
if (value.Equals(variable))
return;
variable = value;
NotifyPropertyChanged();
}
然后,您可以使用此方法更新任何属性,这将使您的代码更简洁,更易管理且更具可读性。
如果您在给定特定条件的情况下尝试显示正确的消息,我将使用enum
并使用适当的名称来确定您要显示的消息和一个switch/case
条件语句:>
enum DisplayMessageEnum
{
Success,
NetworkConnectionFail,
NetworkTimeout,
InvalidCredentials,
// Repeat as necessary
}
String _displayMessage = "Success";
public String DisplayMessage
{
get => _displayMessage;
get => SetProperty(ref _displayMessage, value);
}
...
void SetDisplayMessage(DisplayMessageEnum displayMessage)
{
switch (displayMessage)
{
case DisplayMessageEnum.Success:
DisplayMessage = "Success";
break;
case DisplayMessageEnum.NetworkConnectionFail:
DisplayMessage = "Network connection failed.";
break;
// Repeat for all enum values.
}
}