NServiceBus.ObjectBuilder.Ninject критическая ошибка - PullRequest
1 голос
/ 28 февраля 2012

Я испытываю эту ошибку , упомянутую в группе nsb при запуске в профиле NServiceBus.Production.

Просто интересно, если это известная проблема (Remo? :-)), потому что в настоящее время она не позволит мне использовать ninject с nsb.

NServiceBus.Ninject-CI.3.0.2044 nuget.

Большое спасибо!

2012-02-28 15:24:18,204 [Worker.8] WARN  NServiceBus.Unicast.Transport.Transacti
onal.TransactionalTransport [(null)] <(null)> - Failed raising 'transport messag
e received' event for message with ID=02e57b0c-f345-46ae-a095-f52a4cfc0cfb\2071
System.NullReferenceException: Object reference not set to an instance of an obj
ect.
    at Ninject.Injection.DynamicMethodInjectorFactory.EmitMethodCall(ILGenerator
il, MethodInfo method) in c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject
\Injection\DynamicMethodInjectorFactory.cs:line 130

1 Ответ

2 голосов
/ 28 февраля 2012

Я не писал NSB ObjectBuilder для Ninject.Из исключения я могу сказать, что Ninject не может ввести свойство, потому что нет открытого установщика.С неизменным Ninject это не может произойти, потому что эти свойства фильтруются прежде, если Ninject явно не скажут, что он не должен фильтровать ни одного открытого члена.

Я кратко рассмотрел NinjectObjectBuilder.Он добавляет новую эвристику и кажется, что он не фильтрует публичные свойства с частными установщиками.Эта реализация требует некоторых изменений.

Но я думаю, что это не решит вашу проблему, так как вы все равно хотите вставить это свойство.Правильный способ сделать это - изменить сеттер на public.Кроме того, вы можете изменить настройки, чтобы разрешить инъекцию частного члена.Settings.InjectNonPublic = true; Но я не рекомендую это делать.

...