C# 覆盖Unity批量注册以分配不同的lifetimemanager
我正在使用Unity的3.5.1404.0版本,在我的注册中,我首先有一个批量注册,默认为分层C# 覆盖Unity批量注册以分配不同的lifetimemanager,c#,unity-container,C#,Unity Container,我正在使用Unity的3.5.1404.0版本,在我的注册中,我首先有一个批量注册,默认为分层 container.RegisterTypes( AllClasses.FromAssemblies(false, new[] { Assembly.GetAssembly(typeof (IMyService<>)) }) , WithMappings.FromMatchingInterface, W
container.RegisterTypes(
AllClasses.FromAssemblies(false,
new[]
{
Assembly.GetAssembly(typeof (IMyService<>))
})
, WithMappings.FromMatchingInterface,
WithName.Default,
WithLifetime.Hierarchical);
有没有办法强制使用TransientLifetimeManager?UnityContainer设置代码还应包括
container.RegisterType<MyCustomService<>>(new TransientLifetimeManager());
container.RegisterType(新的TransientLifetimeManager());
单元容器设置代码还应包括
container.RegisterType<MyCustomService<>>(new TransientLifetimeManager());
container.RegisterType(新的TransientLifetimeManager());
尝试使用RegisterInstance
(而不是RegisterType
)它应该覆盖注册。我无法重现您的问题。当我尝试它时,生命周期管理器是TransientLifetimeManager
。您确定要检查正确的注册项目吗?RegisterInstance使用不同的LifetimeManager(ContainerController)。所以我不能使用它。@YacoubMassad由于您无法复制的事实,我已经对它进行了更多的研究,最终发现批量注册是在没有接口映射的情况下向Hierarchy lifetime manager注册MyCustomService,因为WithMappings.FromMatchingInterface无法根据约定创建一个。@IbrahimbenSalah,我仍然无法复制。尝试仅使用此代码在您的环境中复制尝试使用RegisterInstance
(而不是RegisterType
)它应覆盖注册。我无法复制您的问题。当我尝试它时,生命周期管理器是TransientLifetimeManager
。您确定要检查正确的注册项目吗?RegisterInstance使用不同的LifetimeManager(ContainerController)。所以我不能使用它。@YacoubMassad由于您无法复制的事实,我已经对它进行了更多的研究,最终发现批量注册是在没有接口映射的情况下向Hierarchy lifetime manager注册MyCustomService,因为WithMappings.FromMatchingInterface无法根据约定创建一个。@IbrahimbenSalah,我仍然无法复制。尝试仅使用此代码在您的环境中复制
container.RegisterType<MyCustomService<>>(new TransientLifetimeManager());