zoukankan      html  css  js  c++  java
  • netCore自定义接口依赖注入DI

    netCore自定义接口依赖注入DI

    定义接口

    ICacheUtil.cs

    namespace Snblog.Cache.CacheUtil
    {
        public interface ICacheUtil
        {
            /// <summary>
            /// 设置并返回缓存值(值类型)
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <param name="key">缓存键值</param>
            /// <param name="value">要缓存的值</param>
            /// <returns>result</returns>
            public T CacheNumber<T>(string key, T value);
            /// <summary>
            /// 设置并返回缓存值(字符串)
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <param name="key">缓存键值</param>
            /// <param name="value">要缓存的值</param>
            public T CacheString<T>(string key, T value);
        }
    }
    
    

    继承接口

    using Snblog.Cache.Cache;
    
    namespace Snblog.Cache.CacheUtil
    {
        public class CacheUtil:ICacheUtil
        {
    
            //创建内存缓存对象
            private static CacheManager _cache = new CacheManager();
            /// <summary>
            /// 设置并返回缓存值(值类型)
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <param name="key">缓存键值</param>
            /// <param name="value">要缓存的值</param>
            /// <returns>result</returns>
            public T CacheNumber<T>(string key, T value)
            {
                T result = default;
    
                if (_cache.IsInCache(key)) //如果存在缓存取值
                {
                    result = _cache.Get<T>(key);
                }
                else
                {
                    if (!value.Equals(0))
                    {
                    _cache.Set_AbsoluteExpire<T>(key, value, _cache.time);
                    }
                }
                return result;
            }
    
              /// <summary>
            /// 设置并返回缓存值(字符串)
            /// </summary>
            /// <typeparam name="T">返回类型</typeparam>
            /// <param name="key">缓存键值</param>
            /// <param name="value">要缓存的值</param>
            public T CacheString<T>(string key, T value)
            {
                T result = default;
                if (_cache.IsInCache(key)) //如果存在缓存取值
                {
                    result = _cache.Get<T>(key);
                }
                else
                {
                    if (value != null)
                    {
                        _cache.Set_AbsoluteExpire<T>(key, value, _cache.time);
                    }
                }
                return result;
            }
        }
    }
    
    

    DI依赖注入配置

    ConfigureServices

    services.AddScoped<ICacheUtil,CacheUtil>();
    

    使用

    private readonly CacheUtil _cacheUtil;
    public SnArticleService(ICacheUtil cacheUtil,IRepositoryFactory repositoryFactory, IconcardContext mydbcontext, snblogContext coreDbContext, ILogger<SnArticleService> logger) : base(repositoryFactory, mydbcontext)
            {
                _coreDbContext = coreDbContext;
                _cacheUtil= (CacheUtil)cacheUtil;
                _logger = logger ?? throw new ArgumentNullException(nameof(Logger));
            }
            
      result = _cacheUtil.CacheString("AsyGetTestName" + id, result);
    
  • 相关阅读:
    pandas的简单使用
    java搭建web从0-1(第一步:创建web工程)
    android通过命令行安装sdk
    iOS8不能通过itms-services协议下载安装app
    date命令转换日期命令提示date: illegal time format
    mac通过命令行获取证书和配置文件过期时间
    jenkin 不必要的Execute shell执行失败,导致jenkins都失败的解决
    命令行执行jenkins,构建job(可传递参数)
    Eclipse启动分析。。
    java非web应用修改 properties/xml配置文件后,无需重启应用即可生效---自动加载
  • 原文地址:https://www.cnblogs.com/ouyangkai/p/14647753.html
Copyright © 2011-2022 走看看