[英]What is the underlying difference between these two types of property declaration?
[英]What is the difference in these 2 underlying calls to create an instance?
Assembly assembly = Assembly.GetCallingAssembly();
assembly.CreateInstance("MyType");
和
Activator.CreateInstance(typeof(MyType));
好了,Activator.CreateInstance可以是通用的,从而无需强制转换您创建的实例,但是什么时候可以对另一个使用?
基于字符串的版本仅在当前程序集的根名称空间(因为不包括名称空间)中查找(因为不包括程序集名称),以及一些系统程序集。 基于类型的版本已经知道要使用的类型,因此无需搜索。 它可以在任何名称空间或程序集中,但是typeof的含义是您也可以使用“ new”。
当您在运行时提供Type时,使用Type方法更有意义,但通常不接近于对象创建。
在第一个实例中,您可以使用该方法动态创建实例,而无需在运行时知道类型。 在编写代码时,您需要知道第二种类型。
一个明显的“问题”是前者是字符串类型的 ,这很少是件好事,但是它具有在运行时类型检查中的情况优势,因此您具有一定的活力。 就个人而言,重构因素最重要的是动态设计问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.