2015-10-16 45 views
1

我使用統一的,在我的註冊版本3.5.1404.0我有第一批量註冊默認爲分層覆蓋統一批量註冊分配不同lifetimemanager

container.RegisterTypes(
    AllClasses.FromAssemblies(false, 
     new[] 
     { 
      Assembly.GetAssembly(typeof (IMyService<>)) 
     }) 
    , WithMappings.FromMatchingInterface, 
    WithName.Default, 
    WithLifetime.Hierarchical); 

後跟一個單個映射登記重寫壽命經理(Hiararchical)分配給我的服務。

container.RegisterType<IMyService<SomeEntity>, MyCustomService<SomeEntity>>(new TransientLifetimeManager()); 

但是,當我在單元測試中檢查註冊時,LifetimeManager是分層的。

// this assertion fails 
registration.LifetimeManagerType.Should().Be(typeof(TransientLifetimeManager)); 

有沒有辦法強制使用TransientLifetimeManager?

+1

嘗試使用'RegisterInstance'(而不是'RegisterType')它應該重寫註冊。 – Michael

+1

我無法重現您的問題。當我嘗試它時,終身管理器是'TransientLifetimeManager'。你確定你正在檢查正確的註冊項目嗎? –

+0

RegisterInstance使用不同的LifetimeManager(ContainerController)。所以我不能使用它。 –

回答

0

UnityContainer設置代碼也應包括

container.RegisterType<MyCustomService<>>(new TransientLifetimeManager());