首页 > 其他分享 >记录自己使用.net6

记录自己使用.net6

时间:2022-10-17 00:00:28浏览次数:53  
标签:记录 builder SgName value item 使用 net6 type public

首先依赖注入 懒得下载autofac了 直接用程序集进行批量注入

 private static WebApplicationBuilder builder;
        internal static void Load(WebApplicationBuilder web)
        {
            builder = web;
            builder.Services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true);
             Assembly.Load("TestApplication").ExportedTypes.LoadImp();
            builder.Services.AddSingleton(typeof(ITestGren<>), typeof(TestGren<>));
        }
        private static void LoadImp(this IEnumerable<Type> type)
        {
           type= type.Where(d => d.IsClass&&!d.IsAbstract);
            foreach (var item in type)
            {   ///检查是不是泛型类
                if (item.GetGenericArguments().Length is 0) item.GetInterfaces().LoadInter(item);
            }
        }
        private static void LoadInter(this Type[] type,Type ImpType)
        {
            foreach (var item in type)
            {
               if (item.GetGenericArguments().Length is 0) builder.Services.AddSingleton(item,ImpType);
            }
        }

可惜泛型类不能直接注入 需要自己写,反正自己也不怎么写泛型类

然后我们的接口要验签就创建一个类来继承ValidationAttribute特性

 [CheckSgValidation(ErrorMessage ="签名错误")]
    public class TestModel
    {
        public string Sg { get; set; }
    }
    public class CsModel:TestModel
    {
        public int MyProperty { get; set; }
    }
    [AttributeUsage(AttributeTargets.Class )]
    public class CheckSgValidation: ValidationAttribute
    {
        private string SgName = "Sg";
        public CheckSgValidation(string sgName)
        {
            this.SgName = sgName;
        }
        public CheckSgValidation() { }
        public override bool IsValid(object? value)
        {
            StringBuilder sb = new StringBuilder();
            foreach (var item in value.GetType().GetProperties())
            {
                if (item.Name == SgName) continue;
                sb.Append(item.GetValue(value));
            }
            return sb.ToString() == value.GetType().GetProperty(SgName).GetValue(value).ToString();
        }
    }

我是用单独一个类来写上我们自定义的特性, 尝试过用表达式树进行验证的 可惜参数为object就不行 不知道怎么处理这个问题

这样用反射确实可以用

 

标签:记录,builder,SgName,value,item,使用,net6,type,public
From: https://www.cnblogs.com/bay-max-/p/16797582.html

相关文章

  • idea中使用阿里巴巴开发手册插件----Alibaba Java Coding Guidelines
    AlibabaJavaCodingGuidelines p3cp3c是阿里巴巴所研发的代码规范插件,规范基于《阿里巴巴Java开发手册》,在IntelliJIDEA的插件管理中直接搜索AlibabaJavaCodingG......
  • 使用IDEA连接数据库
    使用IDEA连接数据库连接成功后,可以选择数据库双击数据库更新数据 ......
  • 使用PolynomialFeatures来构建特征
    使用sklearn.preprocessing.PolynomialFeatures来进行特征的构造。它是使用多项式的方法来进行的,如果有a,b两个特征,那么它的2次多项式为(1,a,b,a^2,ab,b^2)。那么它的3次......
  • c语言学习记录2
    二进制   二进制(基数为2)数字系统中有两个可能值,在每一位上,通常表示为0或1。相反,在十进制(基数为10)数字系统中,在每一位上,有10个可能值(0,1,2,3,4,5,6,......
  • 使用Windbg OllyDbg从头调试windows服务
    使用WindbgOllyDbg从头调试windows服务 https://toutiao.io/posts/akni2p/preview补充:先设置下odb的jit支持。JIT的设置方法x64dbg和ollydeg都有自动设置x64dbg:菜单......
  • 第二季:6CountDownLatch/CyclicBarrier/Semaphore使用过吗?【Java面试题】
    第二季:6CountDownLatch/CyclicBarrier/Semaphore使用过吗?【Java面试题】​​前言​​​​推荐​​​​6CountDownLatch/CyclicBarrier/Semaphore使用过吗?​​​​说明​​......
  • 65、记录使用科大讯飞的声纹识别从官方的Python Demo转C++ Demo路程
    基本思想:需要将声纹识别的demo集成到项目中,奈何官方只提供了py版本和java版本,需要c++版本,逐开发和记录一下,只是简单复现其py代码一、官方代码的和手册的地址 这里将py代码......
  • docker desktop url protocl 技术以及使用
    dockerdesktop在登录的使用使用了自定义的url协议,同时基于web进行系统登录,认证完成之后会生成code,之后通过url协议进入使用docker协议定义 <array><dict><key>CFBun......
  • maven resource 覆盖配置使用
    mavenresource插件可以对于resource进行处理,比如合并,copy,有一种比较常见的用法是进行覆盖比如我们基于配置插件,在resource阶段将依赖其他配置中心或者repo的配置文件......
  • springMVC的使用
    springMVC的使用2.1新建一个maven项目2.2导入jar包<!--Spring--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId......