c# - Type.CreateInstance 不是比 Activator.CreateInstance 更有意义吗?

标签 c#

1)如果我们想在运行时创建给定类型的实例(因此使用后期绑定(bind)),那么我们需要调用 Activator.CreateInstance。但是如果Type类有这样的方法不是更高效吗?如果不出意外,Type.CreateInstance 可以返回强类型实例而不是 System.Object?!

2) Type.GetType 使我们只能将包含该类型的程序集的友好名称传递给它,因此它不允许我们指定该程序集的绝对路径。

知道为什么 Type.GetType 允许我们指定程序集的绝对路径是个坏主意吗?

谢谢

最佳答案

Type有一个目的:它在运行时环境中定义了一个唯一的“类型”。

保管Activator一个单独的类型,以及 Assembly对于大会资料,是件好事。拥有定义单一用途和用途的小类是更好的设计。

搬家Activator.CreateInstance进入 Type不会使它更有效 - 它可能会使您在特定场景中更容易概念化,但它会导致类型变得更大和更复杂。我个人觉得当前的设计非常干净和漂亮,并且很高兴他们保持 Type 类唯一用于定义类型,并将其他信息(如装配信息和构造)留在单独的类型中。

关于c# - Type.CreateInstance 不是比 Activator.CreateInstance 更有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2411902/

相关文章:

c# - 关于 C# Static Readonly 成员

c# - 在 RollingFileAppender 文件的文件名中添加日期

c# - 使用 Roslyn 检测 c# 6 功能

c# - 获得授权属性的许可?

c# - 使用 StringBuilder 和 DataTable,当只有一行时,如何在不中断的情况下返回三列中的多行?

c# - CSS 文件绝对 URL 在本地机器上不起作用

c# - ASP.NET 网络 API : Correct way to return a 401/unauthorised response

c# - 从查询中检索单个值

c# - 获取无符号长整数中的位数c#

c# - 故障排除 : does not contain a static 'main' method suitable for an entry point