Метод CreateInstance
Вызов с одним аргументом
typeof(Gate) использует
открытый конструктор без
параметров. Перегрузка с
дополнительными значениями
передаёт их в конструктор.
Синтаксис
object item = Activator.CreateInstance(type, args);
Пример
Давайте создать Gate
без параметров:
using System;
class Gate
{
public int Count = 12345;
}
class Program
{
static void Main()
{
Gate gate = (Gate)Activator.CreateInstance(typeof(Gate));
int res = gate.Count;
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте передать abcde
в конструктор:
using System;
class Gate
{
public string Name;
public Gate(string name)
{
Name = name;
}
}
class Program
{
static void Main()
{
Gate gate = (Gate)Activator.CreateInstance(typeof(Gate), "abcde");
string res = gate.Name;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызвать CreateInstance
без параметров, когда их
конструктора нет:
using System;
class Gate
{
public Gate(string name)
{
}
}
class Program
{
static void Main()
{
try
{
Activator.CreateInstance(typeof(Gate));
}
catch (MissingMethodException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
Activator,
обзор -
ConstructorInfo.Invoke,
явный конструктор -
GetConstructors,
поиск ctor -
Invoke,
вызов метода