C# для Windows Урок 21. Как создать экземпляр класса по его имени?
Часто требуется создать экземпляр некоторого класса по его имени. Например, для конфигурации некоторой программы - имя нужного класса может хранится в конфигурационном файле. Или же имя может задать пользователь в каком-нибудь диалоговом окне приложения.
В приведенном ниже примере для Windows мы сделаем это через метод CreateInstance класса Activator. Для этого примера нам понадобятся один интерфейс ISomeInterface и два производных от него класса Class1 и Class2. В принципе можно обойтись и без них, но с ними легче показать, что экземпляры наших классов Class1 и Class2 действительно создаются. Вот объявление интерфейса:
Как вы видите, оба эти класса являются потомками объявленного ранее интерфейса. Реализация метода SomeMethod у них очень похожа - каждый класс показывает своем имя в messagebox'е.
Теперь код, непосредственно создающий экземпляр класса по имени. Добавьте на форму кнопку и текстовое поле. В обработчике для кнопки напишите такой код (он и есть самый важный в нашем приложении):
privatevoid button4_Click(object sender, System.EventArgs e)
{
// Получаем тип по имени.
Type t = Type.GetType("WindowsApplication1."+textBox1.Text);
// Создаем переменную по типу.
ISomeInterface w = (WindowsApplication1.ISomeInterface)
Activator.CreateInstance(t);
// Вызываем метод.
w.SomeMethod();
}
Запускаем программу. При вводе в текстовое поле имени соответствующего класса и нажатии на кнопку создастся его экземпляр - это мы увидим по соотвествующему messagebox'у.
PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru