Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:
SqlConnection connection = null;
connection.Open();
Это вызовет ошибку, потому что, пока я объявил переменную «connection
», она не указала ни на что. Когда я пытаюсь вызвать член «Open
», для его устранения нет ссылки, и он будет вызывать ошибку.
Чтобы избежать этой ошибки:
object == null
. Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.
Вы не можете вводить в свойства, у которых нет публичного сеттера. Оба свойства Logger и Repository защищены, поэтому Ninject не может присвоить им значение. Вам нужно будет изменить свою видимость сеттера, если вы этого хотите. Или используйте инъекцию конструктора. Хотя это имеет смысл для свойства хранилища, которое кажется необходимым, это не имеет смысла для свойства logger. Поэтому я думаю, вам придется публиковать его.
Довольно уверен, что флаг InjectNonPublic
на NinjectSettings
позволяет вам настроить его, чтобы делать то, что вы хотите - ближайшая ссылка , которую я могу быстро найти
поддерживаться в течение какого-либо значительного промежутка времени, я не знаю - инъекции рядовых - это просто плохая идея (вместе с Injection и ассоциированными негодяями: P)