c# ошибка инициализации при использовании наследования INotifyPropertyChanged для члена класса - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть класс Main, в котором я определяю экземпляр другого класса:

namespace testRun
{
    class Main
    {
        /// Initialize object to contain various project data
        public static CurrentState currentState = new CurrentState();
        ...
        public void Event1(object sender, Args e)
        {
            ProcessClear();
        }

        public static void ProcessClear()
        {
            currentState.quantityDictionary.Clear();
        }
}

И класс CurrentState выглядит следующим образом:

namespace testrun
{
        public class CurrentState : INotifyPropertyChanged
        {
            /// Constructor
            public CurrentState() { }

            public event PropertyChangedEventHandler PropertyChanged;

            protected virtual void OnPropertyChanged(string property)
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
            }

            private Dictionary<string, double> quantityDictionary;

            private Dictionary<string, double> QuantityDictionary
            {
                get { return quantityDictionary; }
                set
                {
                    quantityDictionary = value;
                    OnPropertyChanged("QuantityDictionary");
                }
            }
       }
}

Если я установить quantityDictionary как Publi c, я получаю ошибку "Объект не установлен в качестве экземпляра объекта" в строке currentState.quantityDictionary.Clear();

Я думаю, что из-за грани quantityDictionary не инициализирован должным образом, но я не уверен, как именно это сделать правильно или нужно ли это делать в самом конструкторе или где-то еще. Немного запутался в этом ...

Может кто-нибудь помочь мне привести это в порядок? Спасибо

РЕДАКТИРОВАТЬ:

Я установил для поля quantityDictionary значение Личное , но если оно не Publi c тогда я получаю CurrentState.quantityDictionary is inaccessible due to its protection level в классе Main на линии currentState.quantityDictionary.Clear();

...