Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz
Рассылка № 67
 
Начало > C# > Windows > Урок 21

М. Фленов. Программирование на C++ глазами хакера.
М. Фленов. Программирование на C++ глазами хакера
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 21.

C# для Windows
Урок 21. Как создать экземпляр класса по его имени?

Часто требуется создать экземпляр некоторого класса по его имени. Например, для конфигурации некоторой программы - имя нужного класса может хранится в конфигурационном файле. Или же имя может задать пользователь в каком-нибудь диалоговом окне приложения.

В приведенном ниже примере для Windows мы сделаем это через метод CreateInstance класса Activator. Для этого примера нам понадобятся один интерфейс ISomeInterface и два производных от него класса Class1 и Class2. В принципе можно обойтись и без них, но с ними легче показать, что экземпляры наших классов Class1 и Class2 действительно создаются. Вот объявление интерфейса:

namespace WindowsApplication1
{
    
    public interface ISomeInterface
    {
        void SomeMethod();
    }
}

Как вы видите, мы тут ввели некоторый метод SomeMethod.

А вот объявление двух классов:

namespace WindowsApplication1
{
    public class Class1 : ISomeInterface
    {
        public void SomeMethod()
        {
            System.Windows.Forms.MessageBox.Show("Class1");
        }
    }
}

и

namespace WindowsApplication1
{
    public class Class2 : ISomeInterface
    {
        public void SomeMethod()
        {
            System.Windows.Forms.MessageBox.Show("Class2");
        }
    }
}

Как вы видите, оба эти класса являются потомками объявленного ранее интерфейса. Реализация метода SomeMethod у них очень похожа - каждый класс показывает своем имя в messagebox'е.

Теперь код, непосредственно создающий экземпляр класса по имени. Добавьте на форму кнопку и текстовое поле. В обработчике для кнопки напишите такой код (он и есть самый важный в нашем приложении):

        private void button4_Click(object sender, System.EventArgs e)
        {
            // Получаем тип по имени.
            Type t = Type.GetType("WindowsApplication1."+textBox1.Text);
            // Создаем переменную по типу.
            ISomeInterface w = (WindowsApplication1.ISomeInterface)
                Activator.CreateInstance(t);
            // Вызываем метод.
            w.SomeMethod();
        }

Запускаем программу. При вводе в текстовое поле имени соответствующего класса и нажатии на кнопку создастся его экземпляр - это мы увидим по соотвествующему messagebox'у.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2004 сайт progs.biz
© 2002-2004 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.csharplessons
Отписаться

В избранное