什么是System.Activator.CreateInstance?

Lev*_*Lev 7 .net

什么是System.Activator.CreateInstance以及何时使用它?

Dar*_*rov 20

它允许您创建一个对象的实例,该对象的类型仅在运行时已知.所以我们假设你有一些课程

public class MyClass
{
    public void SomeMethod()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

并且您想要创建它的实例.标准方法是这样做:

MyClass instance = new MyClass();
Run Code Online (Sandbox Code Playgroud)

但正如您所看到的,这意味着必须在编译时知道该类型.如果您希望用户在某个文本框中输入类的名称,该怎么办?在这种情况下,您可以使用Activator.CreateInstance:

// this could come from anywhere and it's known only at runtime
string someType = "MyClass"; 
object instance = Activator.CreateInstance(Type.GetType(someType));
Run Code Online (Sandbox Code Playgroud)

缺点是,由于在编译时不知道实际类型,因此必须使用反射来操作使用Activator.CreateInstance创建的实例.