Инъекционная инъекция свойств не работает [дубликат]

Это означает, что указанная переменная не указана ни на что. Я мог бы сгенерировать это так:

SqlConnection connection = null;
connection.Open();

Это вызовет ошибку, потому что, пока я объявил переменную «connection», она не указала ни на что. Когда я пытаюсь вызвать член «Open», для его устранения нет ссылки, и он будет вызывать ошибку.

Чтобы избежать этой ошибки:

  1. Всегда инициализируйте свои объекты, прежде чем пытаться что-либо с ними делать.
  2. Если вы не уверены, что объект имеет значение null, проверьте его с помощью object == null.

Инструмент Resharper JetBrains определит каждое место в вашем коде, которое имеет возможность ошибки нулевой ссылки, позволяя вам ввести нулевую проверку. Эта ошибка является источником ошибок номер один, IMHO.

5
задан Stephen Patten 7 November 2011 в 23:10
поделиться

2 ответа

Вы не можете вводить в свойства, у которых нет публичного сеттера. Оба свойства Logger и Repository защищены, поэтому Ninject не может присвоить им значение. Вам нужно будет изменить свою видимость сеттера, если вы этого хотите. Или используйте инъекцию конструктора. Хотя это имеет смысл для свойства хранилища, которое кажется необходимым, это не имеет смысла для свойства logger. Поэтому я думаю, вам придется публиковать его.

6
ответ дан Darin Dimitrov 31 August 2018 в 20:12
поделиться

Довольно уверен, что флаг InjectNonPublic на NinjectSettings позволяет вам настроить его, чтобы делать то, что вы хотите - ближайшая ссылка , которую я могу быстро найти

поддерживаться в течение какого-либо значительного промежутка времени, я не знаю - инъекции рядовых - это просто плохая идея (вместе с Injection и ассоциированными негодяями: P)

4
ответ дан Ruben Bartelink 31 August 2018 в 20:12
поделиться
Другие вопросы по тегам:

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