C#
Создаем новое C# консольное приложение... и напишем код
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System; // for Type
using System.Reflection; // forConstructorInfo
namespace ConsoleApplication1
{
class Book
{
public readonly string Name;
public readonly int Price;
public Book(string name, int price)
{
Name = name;
Price = price;
}
public void Show()
{
Console.WriteLine(Name + " " + Price);
}
}
class Program
{
static object CreateMyObject(Type myType, Type[] parameters, object[] values)
{
// reflection (получаем конструктор по типам)
ConstructorInfo info = myType.GetConstructor(parameters);
// reflection (создаем объект, вызывая конструктор)
object myObj = info.Invoke(values);
// result
return myObj;
}
static void Main(string[] args)
{
// Вариант 1 (reflection)
Type myClass = typeof(Book);
Type[] parameters = new Type[] { typeof(string), typeof(int) };
object[] values = new object[] { "Компьютер", 40 };
object obj1 = CreateMyObject(myClass, parameters, values);
((Book)obj1).Show();
// на экране увидим "Компьютер 40"
// Вариант 2 (без reflection)
Book obj2 = new Book("Компьютер", 40);
obj2.Show();
// на экране увидим "Компьютер 40"
}
}
}