首页 > 其他分享 >.Net 根据类型全名字符串获取类型信息

.Net 根据类型全名字符串获取类型信息

时间:2023-07-20 14:34:00浏览次数:31  
标签:类型信息 ThirdModels 程序 dll Person 全名 var Net 加载

asp.net项目开发过程中用到了多个程序集(dll), 如何根据类型全名(fullname)获取类型信息?

   

如果项目(csproj)中设置了引用对应的dll 或nupkg包,但是代码中没有任务地方引用改该程序集的类,则实际上运行时,该程序集不会被加载到进程中.

假设有一个 ThirdModels.dll, 在该dll中定义命名空间(namespace) ThirdModels, 该命名空间定义了类Person,即Person类的fullname为ThirdModels.Person . 在代码中没有任何地方直接引用ThirdModels.Person。

则如下代码 

var aseemblies = AppDomain.CurrentDomain.GetAssemblies() 

assemblies中不会加载ThirdModels程序集。这种情况下,通过如下调用可以加载程序集到当前进程:

Assembly.Load(assemblyName)

如果代码中由任何地方直接使用了Person类,则系统会自动加载ThirdModels.Person到当前程序集中。

现在给你两个字符串,一个为"ThirdModels.Person", 另一个为从外部接收到的 Person 对象json序列化字符串.如何在你的程序中获得一个Person对象?

代码如下:

        public static object? GetObjFromAssembly(string clsFullName, string instJson, string assemblyName) 
        {
            var assembly = Assembly.Load(assemblyName);
            var type = AppDomain.CurrentDomain.GetAssemblies()?.SelectMany(x => x.DefinedTypes)?.ToHashSet()
                ?.FirstOrDefault(x => x.FullName == clsFullName);
            if (type is not null)
            {
                var obj = JsonSerializer.Deserialize(instJson, type!);
                return obj;
            }
            return null;            
        }

  

 

标签:类型信息,ThirdModels,程序,dll,Person,全名,var,Net,加载
From: https://www.cnblogs.com/sean-cat008/p/17568339.html

相关文章

  • NET EF 参数化查询(LIKE / IN)
    原始数据:1.拼接SQL:容易注入2.参数化查询:2.1.等于+Like:2.2.等于+Like+ IN:2.2.1.结果:类似的参数传递,但是结果为02.2.2.分析:通过SQLServerProfile得到运行sql,发现IN的参数被处理成了一个字符串,类似于:WHERE[Key]IN('''01'',''11'',''21'�......
  • java执行telnet
    Java执行Telnet的流程在Java中执行Telnet操作,可以通过使用Java的Socket类来实现。下面是整个流程的步骤展示:步骤描述1创建一个Socket对象,并指定Telnet服务器的IP地址和端口号2获取输入输出流,用于与Telnet服务器进行通信3发送命令到Telnet服务器4获取服务器......
  • kubernetes grafana
    KubernetesGrafanaGrafanaisanopen-sourcedatavisualizationandmonitoringtool.Itallowsyoutocreatedashboardsandpanelstovisualizeyourdatainanintuitivemanner.Kubernetesisapopularcontainerorchestrationplatformthathelpsmanagean......
  • netcore Identity(一)
    描述asp.netCoreIdentity提供给我们一组工具包和API,能帮助我们应用程序创建授权和认证功能。也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。1.创建项目配置项nuget包Microsoft.AspNetCore.Identity.EntityFrameWorkCoreMicrosoft.Ent......
  • telnet
    telnet登录远程主机和管理(测试ip端口是否连通)补充说明telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清......
  • ASP.NET Core 系列总结 -- 系列文章
    《ASP.NETCore》系列文章基于.NET3.1和.NET6,主要是系统总结自己日常工作和学习中的知识点,之前是自己在OneNote上自己写,作为学习、总结笔记,逐渐放出来也供大家参考,希望大家都能够对ASP.NETCore框架有一个清晰的认知。章节目录1.入口文件ASP.NETCore-入口文......
  • asp.net Core Actions
    Action方法是在Controllers中定义公共方法使用路由规则将客户端的请求和action方法做映射ActionpublicIActionResultNameOfAction(){ returnView();}这个方法返回一个IActionResult并且方法名称为NameOfAction,action方法返回类型可以是像C#函数中的任意类型,IActionR......
  • .NET HttpClient 关于 Send 问题
           一个数据采集项目中,使用HttpClient 携带COOKIE对被采集的系统调用API的方式进行数据请求,使用HttpClient 过程中发现,通过HttpClient 中Send方式进行数据请求时”JSESSIONID“缺失!      HttpClient初始化:1#region初......
  • 基于 KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
    前言知识点定级:入门级KubeKey扩容Worker节点openEuler操作系统的基本配置Kubernets基本命令实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeSphere/k8s-masterks-master-1192.168.9.922450100Kub......
  • 基于 KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
    前言知识点定级:入门级KubeKey扩容Worker节点openEuler操作系统的基本配置Kubernets基本命令实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeSphere/k8s-master......