LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

使用 C# dynamic 简化反射操作,让代码更简洁

admin
2025年3月24日 18:26 本文热度 314

前言

嗨,大家好!

在C#中,反射是一种强大的工具,允许我们在运行时检查和操作对象的类型信息。

然而,传统的反射方法往往伴随着冗长且不易读的代码。

幸运的是,我们可以通过使用 C# 中的 dynamic 动态类型,来简化一些反射操作,让代码更加简洁和易于理解。 (关于 dynamic 更多知识,可以参考前方《C# 中的神奇两兄弟:var 和 dynamic》)

想知道如何实现的吗?请看下面这个实例。

代码

假设我们有一个简单的类 Person,它包含一些属性:

public class Person
{
    public string Name { getset; }
    public int Age { getset; }

    public void Introduce()
    {
        Console.WriteLine($"Hi, I'm {Name} and I'm {Age} years old.");
    }
}

如果使用反射来访问 Person 类的属性和方法,要这么实现:

using System;
using System.Reflection;

publicclassProgram
{
    public static void Main()
    {
        var person = new Person();
        Type personType = typeof(Person);

        // 设置属性
        PropertyInfo nameProperty = personType.GetProperty("Name");
        nameProperty.SetValue(person, "Jacky");

        PropertyInfo ageProperty = personType.GetProperty("Age");
        ageProperty.SetValue(person, 35);

        // 调用方法
        MethodInfo introduceMethod = personType.GetMethod("Introduce");
        introduceMethod.Invoke(person, null);

        // 输出: Hi, I'm Jacky and I'm 35 years old.
    }
}

代码是不是有点多有点复杂呢?

如果我们使用 dynamic,代码可以这么实现:

using System;

publicclassProgram
{
    public static void Main()
    {
        dynamic person = new Person();

        // 设置属性
        person.Name = "Jacky";
        person.Age = 35;

        // 调用方法
        person.Introduce();

        // 输出: Hi, I'm Jacky and I'm 35 years old.
    }
}

是不是代码更加简洁和直观呢?

优势

也许你对这样的简化不以为然,毕竟代码看起来并没有减少多少,但是,如果考虑到效率兼优美这两点,那么 dynamic 的优势就显现出来了:

  1. 使用 dynamic 可以减少对反射 API 的冗长调用,代码更加简洁和直观

  2. 在使用反射的情况下,错误通常只有在运行时才能被发现,因为许多检查是在编译时失效的。使用 dynamic 类型,尽管仍然是在运行时进行类型检查,但代码的流畅性和直观性使得容易发现潜在的问题

  3. 当需要多次执行时,dynamic 的性能比传统的反射更好,比如对上面例子执行 1000000 次。

总结

使用 C# 中的 dynamic 类型可以在代码中简化反射的使用,是因为 dynamic 允许在运行时动态地调用对象的成员,而不需要显式地使用反射。

建议始终使用 dynamic 来简化反射实现。


该文章在 2025/3/24 18:27:05 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved