У меня есть несколько свойств, как сделать их в методе - PullRequest
0 голосов
/ 20 февраля 2019

вот мой код

 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 истинным. Где проблема, пожалуйста, дайте мне предложение

1 Ответ

0 голосов
/ 20 февраля 2019

Первое изменение, которое я хотел бы сделать, это вырезать повторяющийся код.Например, все ваши установщики свойств делают одно и то же, но с разными переменными:

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 s с соответствующими именами, чтобы определить сообщение, которое вы хотите отобразить, и условный оператор 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.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...