2010-06-12 13 views
2

我有以下代碼使用lightcore IoC容器。 但是它失敗了,因爲「NUnit.Framework.AssertionException:包含的對象是平等的」,它表明應該是瞬態的對象不是。Lightcore IoC返回相同的實例時,它應該給一個新的

這是一個在光線中的錯誤,還是我做錯了?我的德語不夠好,無法閱讀文檔。

[Test] 
public void JellybeanDispenserHasNewInstanceEachTimeWithDefault() 
{ 
    var builder = new ContainerBuilder(); 
    builder.DefaultControlledBy<TransientLifecycle>(); 
    builder.Register<IJellybeanDispenser, VanillaJellybeanDispenser>(); 
    builder.Register<SweetVendingMachine>().ControlledBy<TransientLifecycle>(); 
    builder.Register<SweetShop>(); 

    IContainer container = builder.Build(); 
    SweetShop sweetShop = container.Resolve<SweetShop>(); 
    SweetShop sweetShop2 = container.Resolve<SweetShop>(); 

    Assert.IsFalse(ReferenceEquals(sweetShop, sweetShop2), "Root objects are equal"); 
    Assert.IsFalse(ReferenceEquals(sweetShop.SweetVendingMachine, sweetShop2.SweetVendingMachine), "Contained objects are equal"); 
    Assert.IsFalse(ReferenceEquals(sweetShop.SweetVendingMachine.JellybeanDispenser, sweetShop2.SweetVendingMachine.JellybeanDispenser), "services are equal"); 
} 
+0

看起來像如果您閱讀文檔,請聯繫我。你直接解決的對象是瞬態的,這些對象的屬性似乎不是... – 2010-06-12 20:44:35

+0

也許你可以直接聯繫作者:http://www.peterbucher.ch/kontakt.aspx。我從來沒有使用過LightCore,所以我不能再幫你了。 – 2010-06-13 07:22:50

回答

1

@Anthony 由於報告了該問題,這幫助我很多!

該錯誤應該修復。 http://lightcore.ch/download.aspx

更新:bug修正和集成測試是在將提交給官方的svn庫 LightCore 1.4現在是上面提到的網站上提供的bug修復在這個版本中,

+0

謝謝!我已經將「builder.DefaultControlledBy」這一行移到了註冊之前,因爲我認爲這有所幫助。可以? – Anthony 2010-06-17 09:35:46

+0

是的,我使用延期執行的註冊碼,但用於「DefaultLifecycle,例如Singleton」的已使用變量正好在註冊本身上捕獲。 這意味着,新行「DefaultControlledBy」後的所有語句都使用該生命週期。 感謝您的關注,我將在此文檔中添加註釋。 – 2010-06-17 14:03:27

相關問題