动态方法调用(DynamicMethod)
定义
定义
一、核心概念
动态方法调用模块提供高效、灵活的方法反射调用方案,支持多种底层实现方式,显著提升反射调用性能。特别针对AOT(Ahead-of-Time)编译环境优化,同时保持传统反射场景的高性能表现。
二、核心特性
- 多引擎支持:
- IL代码生成(DynamicBuilderType.IL)
- 表达式树(DynamicBuilderType.Expression)
- 传统反射(DynamicBuilderType.Reflect)
- 源生成(DynamicBuilderType.SourceGenerator)
- 性能卓越:相比原生反射调用,性能提升10倍性能
- AOT友好:源生成模式实现零反射,完美支持iOS/Android等AOT环境
- 智能异步支持:自动识别Task/ValueTask返回值类型
- 全参数支持:支持ref/out参数、泛型参数、参数默认值
- 灵活扩展:支持自定义动态方法特性标记
三、快速开始
3.1 基本声明
public class MyClass
{
[DynamicMethod]
public void SimpleMethod()
{
Console.WriteLine("Method executed");
}
}
3.2 基础调用
// 创建方法包装器
var method = new Method(typeof(MyClass), nameof(MyClass.SimpleMethod));
// 实例化对象
var instance = new MyClass();
// 执行方法调用
method.Invoke(instance);