Что такое System.Activator.CreateInstance?

Что такое System.Activator.CreateInstance и когда его использовать?

Ответ 1

Это позволяет создать экземпляр объекта, тип которого известен только во время выполнения. Предположим, что у вас есть класс

public class MyClass
{
    public void SomeMethod()
    {

    }
}

и вы хотели создать его экземпляр. Стандартный способ - сделать это:

MyClass instance = new MyClass();

но, как вы видите, это означает, что тип должен быть известен во время компиляции. Что делать, если вы хотите, чтобы ваш пользователь вводил имя класса в некотором текстовом поле. В этом случае вы можете использовать Activator.CreateInstance:

// this could come from anywhere and it known only at runtime
string someType = "MyClass"; 
object instance = Activator.CreateInstance(Type.GetType(someType));

Недостатком является то, что, поскольку фактический тип не известен во время компиляции, вам нужно использовать отражение, чтобы манипулировать экземплярами, созданными с помощью Activator.CreateInstance.