Пользовательские глобальные константы со специальной визуализацией LaTeX в math.js

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

public abstract class AbstractObject : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    protected virtual bool SetValue<TKind>(ref TKind Source, TKind NewValue, params string[] Notify)
    {
        //Set value if the new value is different from the old
        if (!Source.Equals(NewValue))
        {
            Source = NewValue;

            //Notify all applicable properties
            foreach (var i in Notify)
                OnPropertyChanged(i);

            return true;
        }

        return false;
    }

    public AbstractObject()
    {
    }
}

Другими словами, вышеупомянутое решение удобно, если вы не возражаете против этого:

public class SomeObject : AbstractObject
{
    public string AnotherProperty
    {
        get
        {
            return someProperty ? "Car" : "Plane";
        }
    }

    bool someProperty = false;
    public bool SomeProperty
    {
        get
        {
            return someProperty;
        }
        set
        {
            SetValue(ref someProperty, value, "SomeProperty", "AnotherProperty");
        }
    }

    public SomeObject() : base()
    {
    }
}

Плюсы

  • Отсутствие отражения
  • Уведомляет только, если старое значение! = новое значение
  • Уведомлять сразу несколько свойств

Минусы

  • Нет свойств авто (вы можете добавить поддержку для обоих, хотя!) [/ ​​g3]
  • Некоторая многословность
  • Бокс (небольшой удар производительности?)

Увы, все же лучше, чем делать это,

set
{
    if (!someProperty.Equals(value))
    {
        someProperty = value;
        OnPropertyChanged("SomeProperty");
        OnPropertyChanged("AnotherProperty");
    }
}

Для каждого отдельного имущества, которое становится кошмаром с Дополнительная информация: - (

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

0
задан m93a 7 March 2019 в 09:07
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: