NServiceBus.ObjectBuilder.Ninject严重错误

时间:2012-02-28 15:31:11

标签: ninject nservicebus

在NServiceBus.Production配置文件中运行时,我在nsb组上遇到this error

只是想知道这是否是一个已知问题(Remo?:-)),因为它目前会阻止我使用nnject和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 个答案:

答案 0 :(得分:2)

我没有为Ninject编写NSB ObjectBuilder。从异常我可以看出,Ninject无法注入属性,因为没有公共setter。由于Ninject保持不变,所以不会发生这种情况,因为除非明确告知Ninject不会过滤任何公共成员,否则这些属性会被过滤掉。

我简要介绍了NinjectObjectBuilder。它添加了新的启发式,似乎它不会使用私有setter过滤公共属性。这种实现需要一些改变。

但我认为这不会解决你的问题,因为你想要注入该属性。正确的方法是将setter更改为public。或者,您可以更改设置以允许私有成员注入。 Settings.InjectNonPublic = true;但我不建议这样做。