2012-02-28 76 views
1

在NServiceBus.Production配置文件中運行時,我遇到了nsb組上提到的this errorNServiceBus.ObjectBuilder.Ninject嚴重錯誤

只是想知道它是否是已知問題(Remo?:-)),因爲它目前會阻止我在nsb中使用ninject。

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 

回答

2

我沒有爲Ninject編寫NSB ObjectBuilder。從例外情況我可以看出,Ninject沒有注入房產,因爲沒有公共設置者。如果Ninject不變,則不會發生這種情況,因爲除非明確告知Ninject不應過濾任何公共成員,否則這些屬性將被過濾。

我簡要介紹了NinjectObjectBuilder。它增加了新的啓發式,似乎它不會過濾私人設置者的公共屬性。這個實現需要一些改變。

但我認爲這不會解決您的問題,因爲您想要注入該屬性。正確的做法是將二傳手改爲公開。或者,您可以更改設置以允許註冊privat成員。 Settings.InjectNonPublic = true;但我不建議這樣做。

+0

感謝雷莫,並再次感謝您所有目前的工作ninject!我希望你知道關於NSB適配器的東西,這個答案有幫助。皮特。 – 2012-02-29 09:12:53

相關問題