gpt4 book ai didi

dependency-injection - Unity DI Container RegisterType 方法打破了从 v5.8.x 到 v5.9.x 的变化

转载 作者:行者123 更新时间:2023-12-04 08:23:18 24 4
gpt4 key购买 nike

我正在使用 Unity DI 容器 v5.8.4 在我的 .NET Core 2.1 项目中,我需要注册 Mediator对象,我正在使用建议的配置 here .

现在我已经更新到 v5.9.4 我有关于 RegisterType 的错误方法参数:

Cannot convert from 'Unity.Lifetime.LifetimeManager' to 'Unity.Injection.InjectionMember'



这是我的实际代码:

public static IUnityContainer RegisterMediator(this IUnityContainer container, LifetimeManager lifetimeManager)
{
return container.RegisterType<IMediator, Mediator>(lifetimeManager)
.RegisterInstance<ServiceFactory>(type =>
{
var enumerableType = type
.GetInterfaces()
.Concat(new[] { type })
.FirstOrDefault(t => t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IEnumerable<>));

return enumerableType != null
? container.ResolveAll(enumerableType.GetGenericArguments()[0])
: container.IsRegistered(type)
? container.Resolve(type)
: null;
});
}

我该怎么做才能更新注册码?

最佳答案

他们更改了 RegisterType 的签名在此 PR它现在正在接受 ITypeLifetimeManager而不是 LifetimeManager .
HierarchicalLifetimeManager现在正在实现 ITypeLifetimeManager界面,因此您只需要更新 lifetimeManager您的 RegisterMediator 中的参数方法:

public static IUnityContainer RegisterMediator(this IUnityContainer container, 
ITypeLifetimeManager lifetimeManager)
{
return container.RegisterType<IMediator, Mediator>(lifetimeManager)
...
}

关于dependency-injection - Unity DI Container RegisterType 方法打破了从 v5.8.x 到 v5.9.x 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com