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);
    
  • 相关阅读:
    中国移动全球通寻宝第四期攻略
    推荐一个奥运门票交流的网站!
    国务院发出通知明确2008年部分节假日放假安排
    [转]开发人员如何谈加薪,抛砖引玉,欢迎大家各抒己见。
    中级.NET开发人员应该知道些什么?
    linux系统管理 系统安全及应用
    Linux10 进程 定时任务 僵尸进程
    shell脚本练习
    虚拟机和liunx系统的装机
    Linux三剑客awk的应用对比案例详解
  • 原文地址:https://www.cnblogs.com/ouyangkai/p/14647753.html
Copyright © 2011-2022 走看看