Хочу узнать, как с помощью рефлексии создать объект класса, у которого явно прописан конструктор. Предположим есть класс Student:
class Student
{
private int _temp = 10;
private string name = "Vasya";
}
В таком случае использование рефлексии при создании экземпляра выглядит следующим образом:
class Program
{
static void Main(string[] args)
{
Type type = typeof(Student);
ConstructorInfo info = type.GetConstructor(new Type[] { });
object student = info.Invoke(new object[] { });
}
}
Но если в моем студенте появится явно прописанный конструктор, например такой:
class Student
{
private int temp;
private string name;
public Student(int temp, string name)
{
this.temp = temp;
this.name = name;
}
}
то как именно я должен передать параметры в вызывающей части программы? А именно тут:
ConstructorInfo info = type.GetConstructor(new Type[] { });
object student = info.Invoke(new object[] { });
Нужно получить такой конструктор:
ConstructorInfo info = type.GetConstructor(new Type[] { typeof(int), typeof(string) });
И передать в него параметры:
object student = info.Invoke(new object[] { 20, "Petya" });
Почему бы не просто
var student = (Student)Activator.CreateInstance(typeof(Student), 1, "Vasya");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как с помощью этого средства сделать дозапись данных в Json:
Прохожусь по столбцу в dataGridView и если есть значение, которого нет в TreeView, то оно должно добавляетсяНа деле существующие значения дублируются