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

这篇具有很好参考价值的文章主要介绍了.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;            
        }

  

 文章来源地址https://www.toymoban.com/news/detail-586642.html

到了这里,关于.Net 根据类型全名字符串获取类型信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux中获取字符串长度与获取子字符串

    一、  获取字符串长度 #!/bin/bash string = \\\"jobs\\\" echo   ${string}      # 输出结果: jobs echo   ${#string}     # 输出结果: 4 二、 提取子字符串 以下实例从字符串第 2  个字符开始截取 4  个字符: #!/bin/bash str = \\\"敢于亮剑决不后退\\\" echo   ${str:2:2}      # 输出结果为: 亮剑 ​​​​​

    2024年02月19日
    浏览(66)
  • .NET字符串内存管理:常量字符串、动态创建和字符串池的巧妙结合

      在 .NET 中,字符串是不可变的,这意味着一旦创建,字符串的内容就不能被修改。字符串在内存中以不同的方式存储,具体取决于它是常量字符串还是动态创建的字符串。 常量字符串在编译时就被解析,并在程序的元数据(Metadata)中存储。多个相同的字符串常量可能会共

    2024年01月20日
    浏览(50)
  • VB.NET 截取字符串

    在VB.NET中,您可以使用 Substring 方法或 Split 方法来截取字符串。 Substring 方法允许您从字符串中提取一个子字符串,该子字符串从指定的起始索引开始,并继续到字符串的末尾或指定的长度。以下是使用 Substring 方法截取字符串的示例: 在上面的代码中,我们首先定义了一个

    2024年02月04日
    浏览(41)
  • 【python基础】基本数据类型-字符串类型

    视频讲解: 字符串数据类型01 字符串就是一系列字符。在python中,用引号括起来文本内容的都是字符串。 其语法格式为:‘文本内容’或者“文本内容” 编写程序如下所示 我们发现其中的引号可以是单引号,也可以是双引号。这样的灵活性可以使我们进行引号之间的嵌套。

    2024年02月06日
    浏览(50)
  • Rust类型之字符串

    Rust 中的字符串类型是 String 。虽然字符串只是比字符多了一个“串”字,但是在Rust中这两者的存储方式完全不一样,字符串不是字符的数组, String 内部存储的是 Unicode 字符串的 UTF8 编码,而 char 直接存的是 Unicode Scalar Value 。 Rust字符串对 Unicode 字符集有着良好的支持,可以

    2024年02月02日
    浏览(50)
  • python教程 入门学习笔记 第6天 数据类型转换 字符串转换成数值 数值之间互转 其它类型转字符串

    s1=\\\"188\\\" #字符串 ns1=int(s1) #转换成整型数值 print(ns1+8) #打印数值结果 s1=\\\"3.14\\\" #字符串 ns1=float(s1) #转换成浮点型数值 print(ns1+3) #打印数值结果(数值结果为6.140000000000001,出现误差,后面讲解决办法) print(type(ns1)) #获取新数值的数据类型属性 z1=78 nz1=float(z1) print(nz1) #打印结果

    2024年02月14日
    浏览(70)
  • java获取字符串最后一个字符

    要获取字符串的最后一个字符,你可以使用以下方法之一: 方法1:使用 charAt() 方法 方法2:使用 substring() 方法 在这两种方法中,我们使用 str.length() - 1 来获取字符串的最后一个字符的索引,然后使用 charAt() 方法 或将最后一个字符作为子字符串使用 substring() 方法。 请注意

    2024年02月03日
    浏览(47)
  • 时间字符串转Date类型

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 将字符串时间转为Date类型的日期 如 2023年7月5号12点34分58秒的时间字符串20230705123458 转

    2024年02月12日
    浏览(87)
  • 数据库-列的类型-字符串char类型

    char 类型懂得都懂就是固定的字符串类型 char (maxLen)  例如 char(5) 这个长度为5 但插入数据‘a’时 是5 插入abc 也是5 即使插满固定 就像C/C++语言里 char 字符数组一样 maxLen==255  哈哈最多有255个字符多了我认为你是错误  varchar 类型顾名思义可变字符串类型 varchar (maxLen)但 长度可

    2024年02月02日
    浏览(54)
  • .NET实现解析字符串表达式

    我们创建了一个 School 对象,其中包含了教师列表和学生列表。现在,我们需要计算教师平均年龄和学生平均年龄。 如果我们将计算教师平均年龄的公式交给用户定义,那么用户可能会定义一个字符串来表示: Teachers.Sum(Age)/Teachers.Count 或者可以通过lambda来表示: teachers.Averag

    2023年04月21日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包