.NET中创建对象有几种方式?它们各自的特点和适用场景是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2146个文字,预计阅读时间需要9分钟。
目录+ 使用反射的Invoke方法+ 使用Activator.CreateInstance+ 使用Microsoft.Extensions.DependencyInjection+ 使用Natasha+ 使用表达式表达式+ 使用Emit+ 基准测试+ 相关链接+ 在.NET中创建对象的最简单方法
目录
- 使用标准反射的 Invoke 方法
- 使用 Activator.CreateInstance
- 使用 Microsoft.Extensions.DependencyInjection
- Natasha
- 使用表达式 Expression
- 使用 Emit
- 基准测试
- 相关链接
在 .net 中,创建一个对象最简单的方法是直接使用 new (), 在实际的项目中,我们可能还会用到反射的方法来创建对象,如果你看过 Microsoft.Extensions.DependencyInjection 的源码,你会发现,为了保证在不同场景中的兼容性和性能,内部使用了多种反射机制。在本文中,我对比了常见的几种反射的方法,介绍了它们分别应该如何使用,每种的简易度和灵活度,然后做了基准测试,一起看看这之间的性能差距。
我按照使用的简易度和灵活度,做了下边的排序,可能还有一些其他的反射方式,比如 Source Generators,本文中只针对以下几种进行测试。
本文共计2146个文字,预计阅读时间需要9分钟。
目录+ 使用反射的Invoke方法+ 使用Activator.CreateInstance+ 使用Microsoft.Extensions.DependencyInjection+ 使用Natasha+ 使用表达式表达式+ 使用Emit+ 基准测试+ 相关链接+ 在.NET中创建对象的最简单方法
目录
- 使用标准反射的 Invoke 方法
- 使用 Activator.CreateInstance
- 使用 Microsoft.Extensions.DependencyInjection
- Natasha
- 使用表达式 Expression
- 使用 Emit
- 基准测试
- 相关链接
在 .net 中,创建一个对象最简单的方法是直接使用 new (), 在实际的项目中,我们可能还会用到反射的方法来创建对象,如果你看过 Microsoft.Extensions.DependencyInjection 的源码,你会发现,为了保证在不同场景中的兼容性和性能,内部使用了多种反射机制。在本文中,我对比了常见的几种反射的方法,介绍了它们分别应该如何使用,每种的简易度和灵活度,然后做了基准测试,一起看看这之间的性能差距。
我按照使用的简易度和灵活度,做了下边的排序,可能还有一些其他的反射方式,比如 Source Generators,本文中只针对以下几种进行测试。

