【发布时间】:2020-01-21 18:27:34
【问题描述】:
我想在我的 ASP.Net Core 应用程序中使用 IMemoryCache,但问题是我不知道如何在 Unity DI 容器中注册它,而不是默认 DI 实现。
如果我要使用默认 DI,它会通过添加来解决问题
services.AddMemoryCache();
到 startup.cs 的行。
因此,如果有任何想法可以帮助我将 IMemoryCache 与 Unity DI 一起使用,我将不胜感激,因为现在我收到以下错误:
InvalidOperationException:当前类型, Microsoft.Extensions.Caching.Memory.IMemoryCache,是一个接口和 无法构建。您是否缺少类型映射?
启动时的 DI 部分:
public void Configure (IApplicationBuilder app, IStringLocalizer<Startup> stringLocalizer)
{
InitializeContext ();
....
private static void InitializeContext ()
{
var container = new UnityContainer ();
UnityConfigurationSection section
= (UnityConfigurationSection) ConfigurationManager.GetSection ("unity");
section.Configure (container, "primaryUnityContainer");
var resolver = new UnityDependencyResolver (container);
container.RegisterInstance<IDependencyResolver> (resolver);
DependencyContext.Initialize (resolver);
}
更新:
它是来自 Microsoft.Practices.Unity 命名空间的旧版 Unity DI 容器,不能用作 .net core 的默认 DI
【问题讨论】:
-
您是否对容器使用任何集成?检查github.com/unitycontainer/microsoft-dependency-injection
-
IDependencyResolver不是 asp.net-core 的一部分。你的项目是什么版本? -
@Nkosi Unity DI 实现必须像这样,因为我正在使用的遗留组件需要它
-
@Nkosi 核心 2.1
标签: c# asp.net-core caching dependency-injection unity-container