Рассмотрим этот код:Создание экземпляра из класса в C# с помощью отражения
class Program
{
static void Main(string[] args)
{
var instance = Activator.CreateInstance<Person>();//No parameterless constructor defined for this object.
}
}
public class Person
{
public Person(string name = "Shahrooz") { }
}
При использовании этого кода: Activator.CreateInstance<Person>();
я получаю эту ошибку:
No parameterless constructor defined for this object.
Обратите внимание, что мой конструктор имеет параметр по умолчанию: строку name = "Shahrooz"
Почему мы не можем создать экземпляр из класса с конструктором, несмотря на то, что конструктор имеет параметр значения ошибки?
Но почему мы можем создать с помощью этого кода: объект O = Activator.CreateInstance (TypeOf (Person), «Али»); –
, потому что для этого метода требуется массив объектов/параметров –
@ShahroozJefri ㇱ Вы можете это сделать, потому что вы явно передаете параметр. Общая версия 'Create' требует конструктора без параметров, который не совпадает с конструктором, и все его параметры по умолчанию будут иметь некоторые значения. –
dasblinkenlight