首页 > 其他分享 >对上次的自动扫描进行改造

对上次的自动扫描进行改造

时间:2024-03-21 10:35:24浏览次数:24  
标签:RegisterType 改造 class 扫描 上次 var type public typeInterDict

1、现在有多个程序集

lib1、lib2、lib3、lib4

每个程序集都有类标注了特性ScanningAttribute

特性的代码是

 [AttributeUsage(AttributeTargets.Class, Inherited = false)]
 public class ScanningAttribute : Attribute
 {
     public string RegisterType { get; set; }
 }

lib1中存在

[Scanning(RegisterType="单例")]
public class Logger:ILogger{}
[Scanning(RegisterType="瞬时")]
public class HttpClientService:IHttpClientService{}

lib2中存在

[Scanning(RegisterType="单例")]
public class HomeRepository:IHomeRepository{}
[Scanning(RegisterType="瞬时")]
public class HomeService:IHomeService{}
[Scanning(RegisterType="花式")]
public class MainService:MainService{}

lib3和lib4都有和lib1,lib2类似的,我就不多写了

public void RegisterScannedTypes()
{
    var assemblies = new[]
{
    "Lib1", "Lib2", "Lib3", "Lib4",
};
    foreach (var assemblyName in assemblies)
    {
        //1、先是加载程序集
        var assembly = Assembly.Load(assemblyName);
        //2、找到类中标注了特性ScanningAttribute的所有类
        var typesToRegister = assembly.GetTypes()
        .Where(type => Attribute.IsDefined(type, typeof(ScanningAttribute)));
        // 3、创建一个字典,键是接口类型,值是实现类的类型 因为标注了特性ScanningAttribute的类只有一个接口
        var typeInterfaceDicts = typesToRegister.ToDictionary(type => type.GetInterfaces().First(), type => type);
       
        foreach (var typeInterDict in typeInterfaceDicts) 
        {
             //4、找到关于类中特性的RegisterType
		 var attribute = typeInterDict.Key.GetCustomAttribute<ScanningAttribute>(false);
            if (attribute != null)
            {
                switch (attribute.RegisterType)
                {
                    case "单例": _containerRegistry.RegisterInstance(typeInterDict.Key, typeInterDict.Value); break;
                    case "瞬时": _containerRegistry.RegisterScoped(typeInterDict.Key, typeInterDict.Value); break;
                    default:
                        break;
                }
            }
        }
    }

标签:RegisterType,改造,class,扫描,上次,var,type,public,typeInterDict
From: https://www.cnblogs.com/guchen33/p/18086755

相关文章

  • tcp扫描流量
    题目介绍在墨西哥逃亡期间,X先生通过互联网远程渗透到北极核聚变研究机构(ANFRF)的实验室子网。实际上在设施内部(通过一个被入侵的系统)他进行了一些嘈杂的网络侦察,可悲的是X先生还不是很隐蔽,对X先生来说不幸的是实验室的网络被装备来捕获所有流量(包括全部内容),他的活动被你发现......
  • 浏览器脚本:获取MOKA简历中的手机号码自动生成二维码方便手机扫描拨号
    效果演示:对其中隐私部分已经隐藏,请自行测试JS控制台代码:letlastPhoneNumber='';constcheckPhoneNumber=()=>{constelements=document.querySelectorAll('[class*="sd-Icon-iconmobile"]');elements.forEach(element=>{cons......
  • 新的Date类改造
    1)替换原来的newDate()和Calendar.getInstance().getTime()原来的方式:Date nowDate = new Date();Date nowCalendarDate = Calendar.getInstance().getTime();使用 java.time 改造后:// 使用Instant代表一个时间点,这与Date类似Instant nowInstant = Instant.now......
  • FPGA入门笔记008——数码管动态扫描设计与验证
    #FPGA入门笔记008——数码管动态扫描设计与验证1、数码管动态扫描原理​ 8段数码管的结构图如图1所示:图1——8段数码管结构图(a为共阴极,b为共阳极)​ 对于共阴数码管需要给对应段以高电平才会使其点亮,而对于共阳极数码管则需要给低电平才会点亮。AC620上板载的是共阳极数......
  • 换维扫描线
    简介一般来说,我们处理某些可以离线的问题,我们会将询问离线,然后将修改挂在左端点或右端点,然后从左往右扫描这些修改,并处理询问,数据结构记录的一般是下标\(i\)到当前走到的地方的一些信息。而换维扫描线则采取了截然相反的措施:我们将区间修改转化成差分,然后从左往右扫描序列,线段......
  • 本地扫描maven项目依赖jar的license信息
    添加plugin<plugin><groupId>org.codehaus.mojo</groupId><artifactId>license-maven-plugin</artifactId><version>2.4.0</version><configuration><!--指定输出内容的模版,......
  • nmap 进行网络扫描详细操作
    1.安装nmap首先,您需要在您的系统上安装nmap。这通常可以通过系统的包管理器来完成。以下是一些常见发行版的安装命令:对于Debian/Ubuntu系统:sudoaptupdate sudoaptinstallnmap对于CentOS/RedHat系统:sudoyumupdate sudoyuminstallnmap对于macOS......
  • direasch目录扫描工具
    direasch目录扫描工具安装:1、github源码下载解压使用git安装:'''(推荐gitclonehttps://github.com/maurosoria/dirsearch.git--depth1)'''zip文件安装;'''https://codeload.github.com/maurosoria/dirsearch/zip/refs/heads/master'&#......
  • fastjson改造
    背景fastjson太过于侧重性能,对于部分高级特性支持不够,而且部分自定义特性完全偏离了json和js规范导致和其他框架不兼容;fastjson文档缺失较多,部分Feature甚至没有文档,而且代码缺少注释较为晦涩;fastjson的CVEbug监测较弱,很多CVE数据库网站上有关fastjson的CVE寥寥无几,例如近......
  • SQL Server索引查找/扫描没有出现key lookup的案例浅析
    在我们讲解这个案例前,我们先来了解/预热一下SQLServer的两个概念:键查找(keylookup)和RID查找(RIDlookup),通常,当查询优化器使用非聚集索引进行查找时,如果所选择的列或查询条件中的列只部分包含在使用的非聚集索引和聚集索引中时,就需要一个查找(lookup)来检索其他字段来满足请求。对......