c# - IDistributedCache 通过注入(inject)调用构造函数

标签 c# caching redis

我有一个基于asp.net core 2.1解决方案使用redis分布式缓存的项目。有些东西我还不明白。

我有一个类 myClassName,它的构造函数需要注入(inject)。

public class myClassName
{
   private readonly IDistributedCache _userCache;

   public  myClassName(IDistributedCache distributedCache) => _userCache
    = distributedCache;

   public async Task FirstMethod(...)

   private async Task SecondMethod(...)

}

我必须从另一个类“myClassNameTwo”创建一个“myClassName”实例并访问一些方法。

所以我有:

   Public class myClassNameTwo : Hub
   {
      private readonly AssetsBroadcaster _broadcaster;

      public myClassNameTwo(AssetsBroadcaster broadcaster)
      {
        _broadcaster = broadcaster;           
      }

      public async Task DoSomething(...) 
      {
        myClassName hello = new myClassName(???)

        await hello.FirstMethod(...)
      }
  }

如何检索 IDistributedCache 服务实例以传递给 myClassName 构造函数?

最佳答案

如果你使用.Net Core,使用依赖指令,如果你在启动时注册了myClassName类,你可以注入(inject)实例。

喜欢,

public class myClassName{

private readonly IDistributedCache _userCache;

public  myClassName(IDistributedCache distributedCache) {
 _userCache = distributedCache;
}

public async Task FirstMethod(...)

private async Task SecondMethod(...)

}

第二堂课可以像下面这样

   Public class myClassNameTwo : Hub
   {
      private readonly AssetsBroadcaster _broadcaster;
      private readonly myClassName _myClassName;

      public myClassNameTwo(AssetsBroadcaster broadcaster,
                myClassName myClassName)
      {
        _broadcaster = broadcaster;     
        _myClassName = myClassName;   
      }

      public async Task DoSomething(...) 
      {    
        await _myClassName.FirstMethod(...)
      }
  }

myClassName 的依赖项将被自动注入(inject)。所以你不需要单独注入(inject)它。

For more details

关于c# - IDistributedCache 通过注入(inject)调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51171308/

相关文章:

node.js - nodejs 在 redis 失败时终止

c# - 如何从资源文件中获取流对象(控制台应用程序/Windows 服务项目)

javascript - 如何在前端和后端验证必填字段

c# - 如何使用 SQL Server 创建自定义 ASP.NET 身份提供程序?

c# - 在 C# 中清除 ColorConvertedBitmap

session - Laravel 的 Artisan 从哪里获取 session 配置信息?

c - 与具有超过 500 万个键值对的 REDIS 匹配的最长前缀

asp.net-mvc-3 - 使用 Razor 在 Asp.Net MVC3 上合并、缩小和 GZIP 样式和脚本的完整解决方案

asp.net-mvc - 浏览器重启后不缓存资源

Redis延迟键添加