C# 覆盖Unity批量注册以分配不同的lifetimemanager

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

我正在使用Unity的3.5.1404.0版本,在我的注册中,我首先有一个批量注册,默认为分层

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());