zoukankan      html  css  js  c++  java
  • 自用基础库QW.Base介绍

    起因

    多年开发,回头一向,轮子一片,能复用的没几个,特整理了一些常用功能归集到一个依赖小的库里。

    项目

    https://gitee.com/u5web/QW.Base

    本项目开源免费,支持.net45+,.NetCore 2.2+

    常用功能介绍

    1.加密辅助

       1.1. MD5 支持MD5Base64   

    var md5hash=MD5Helper.ComputeHash("test");

       1.2. Base64

              编码:

    var a=Base64Helper.Encode("test");
    

        解码:

    var a=Base64Helper.Decode("test")

       1.3. DES

              加密:

    var a=DESHelper.Encrypt("待加密字符","密钥");
    

        解密:

    var a=DESHelper.Decrypt("密文","密钥");

    2.缓存

       2.1. 注册缓存组件

    QW.Core.Cache.CacheHandlerBuilder.Create()
                 .UseMemoryCache()    //使用内置内存缓存方式
                 .Build();

     2.2. 使用缓存

    //缓存给值
    CacheHandler.Set("test",DateTime.Now.ToString());
    //缓存取值
    var v = CacheHandler.Get<string>("test");

        2.3. 切换缓存组件

        如果想别的缓存组件,可以先继承QW.Core.Cache.ICacheHandler,完成缓存的读写方法。然后改注册缓存组件代码

    QW.Core.Cache.CacheHandlerBuilder.Create().RegisterHandler(new MyCacheHandler()).Build();

    3.简单IOC

       3.1. 注册容器中心

    QW.Core.IOC.IOCContainerBuilder.Create()
               .UseDictionaryIOCContainer()   //内置字典方式,减少了依赖,但瞬态方式性能不好
               .RegisterType<IUser,User>(InstanceLifetimeScope.Singleton)   //注入一个单例
               .Build();

     3.2. 反转实例

    var user=QW.Core.IOC.IOCContainer.Resolve<IUser>();
    

      3.3. 切换IOC容器

         如果想别的IOC容器,可以先继承QW.Core.IOC.IIOCContainer,完成对应方法。然后改注册容器中心代码

    QW.Core.IOC.IOCContainerBuilder
                            .Create()
                            .RegisterHandler(new MyIOCContainer())
                            .RegisterType<IUser,User>()
                            .Build();
    

      

    4.Web扩展

       4.1. url地址处理辅助,替换url参数示例

    QW.Core.Web.URI.Replace("/index?t=1234","t","1255")

       4.2. 统一HttpContext,使用QW.Core.Web.HttpContext.Current可以对当前上下文的请求回应做操作,FX直接使用,NetCore需要注册静态上下文

        public class Startup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                //需要nuget引入对应包
                services.AddHttpContextAccessor();
            }
    
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                //注入http上下文
                app.UseStaticHttpContext();
            }
        }

    5.文件

       5.1. 注册文件中心

    QW.Core.File.FileHandlerBuilder.Create()
                .UseLocalFileHandler()   //使用内置本地文件系统
                .Build();

       5.2. 使用

    FileHandler.CreateFile("d:1.txt", Bytes);   //创建文件
    var bytes=FileHandler.GetFileContent("d:1.txt");  //获取文件内容
    FileHandler.ExistFolder("d:	est")   //目录是否存在

      5.3. 切换文件系统

         如果想别的文件系统(如阿里云OSS),可以先继承QW.Core.File.IFileHandler,完成对应方法。然后改注册文件中心代码

    QW.Core.File.FileHandlerBuilder.Create().RegisterHandler(new MyFileHandler()).Build();

    6.日志

       6.1. 注册日志中心

    QW.Core.Log.LogHandlerBuilder.Create()
               .Uselog4netHandler("log4net.config")   //使用内置log4net方式,log4net.config请参考官方
               .Build();

        6.2. 使用

    LogHandler.Error(new Exception("我是一个异常"));
    LogHandler.Info(new Exception("我是一个信息"));
    LogHandler.Warn(new Exception("我是一个警告"));
    LogHandler.Debug(new Exception("我是一个调试"));

      6.3. 切换日志组件

         如果想别的日志组件(如NLog),可以先继承QW.Core.Log.ILogHandler,完成对应方法。然后改注册日志中心代码

    QW.Core.Log.LogHandlerBuilder.Create().RegisterHandler(new MyLogHandler()).Build();

    7.常用扩展

       对系统基础类有的一些扩展,命名空间在原类命名空间下,如string,本扩展对应的命名空间就在System.使用时只要引用了本库,在可以使用string的地方就可以使用对string的扩展方法。如

    "asdfasdfasdf".Cut(10,"..");  //只需要引用本库,using System;就可以使用本方法

    说明

    本库参考了很多代码,大部份都标注了参考感谢,如果缺漏,请提醒我,感谢大家!

  • 相关阅读:
    Segment Routing之IPv6 SR概述
    ping6 connect: Invalid argument
    glance image-list
    SRv6技术研究和组网设计
    physical_interface_mappings
    bond
    srv6 tools---SRext
    srv6
    8月18号
    8月17号
  • 原文地址:https://www.cnblogs.com/daiziyi/p/12874508.html
Copyright © 2011-2022 走看看