Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Получение экземпляра класса Type

Конструкторы и деструкторы | Частично определяемые классы и их назначение | Механизм вызова событий | Создание пользовательских обобщенных коллекций | Создание обобщенных интерфейсов | Установка ограничений на параметры обобщенных классов | Обобщенные делегаты | Несколько слов о вложенных делегатах | И напоследок... блок finally | Создание пользовательских атрибутов |


Читайте также:
  1. IV. Making inquiries at the Information Desk.— Получение справки в Справочном столе (в Бюро информации).
  2. Б) элементы системы вне зависимости от ее класса образуют устойчивые достаточно сильные взаимосвязи
  3. Бронирование в разных классах
  4. В: Что уже известно об игровых классах?
  5. Вопрос(получение монокристов
  6. ГЛАВА 6: ОСНОВЫ СТИЛЯ И КЛАССА, А ТАКЖЕ БОЛЕЕ О ТОМ, КАК ОЧАРОВАТЬ ЖЕНЩИНУ
  7. Глава III . Получение шаманского дара

Получить экземпляр класса Type можно несколькими способами. Выбор способа зависит от условий задачи, и от того, какой информацией о типе вы располагаете при разработке программы (на момент компиляции).

1. Простейший случай – когда тип определён в вашей программе, или если при компиляции указана ссылка на сборку, содержащую данный тип. В этом случае экземпляр класса Type можно получить посредством операции typeof (все примеры в этой статье написаны на C#):

using System;namespace App1{ class Class1 { static void Main() { Type type = typeof(Class1); Console.WriteLine(type.FullName); Console.ReadLine(); } }}

 

То, что в примерах программ используется именно язык C#, не играет принципиальной роли. Дело в том, что возможности среды.Net по работе с метаданными доступны из любого языка программирования, удовлетворяющего CLS (common language specification). Поэтому вы всегда найдёте соответствующие конструкции в других языках. Например, операции typeof языка C# соответствуют операция __typeof из MC++ или оператор GetType из VB.NET.

2. Если есть экземпляр интересующего вас класса, то соответствующий ему экземпляр класса Type можно получить с помощью метода GetType. Этот метод получают в наследство от класса Object все классы в среде.Net.

Class1 app = new Class1();Type type = app.GetType();

3. Имеется возможность перебрать все типы, определённые в сборке, и найти нужный класс по каким-либо критериям или выполнить необходимые действия со всеми классами в сборке. Вот так, например, можно напечатать имена всех типов, содержащихся в текущей сборке-приложении:

using System;using System.Reflection;namespace App1{ class Class1 { static void Main() { foreach (Type type in Assembly.GetExecutingAssembly().GetTypes()) Console.WriteLine(type.Name); Console.ReadLine(); } }}

В этом примере для получения текущей сборки-приложения использован статический метод GetExetutingAssembly класса Assembly, затем с помощью метода GetTypes получен массив всех типов, содержащихся в текущей сборке.

Обращаю ваше внимание на то, что в этом примере было использовано пространство имён System.Reflection. Это главное вместилище классов и других типов, имеющих отношение к метаданным и рефлексии. Большинство типов, с которыми мы познакомимся ниже, определены в этом пространстве имён. Класс Type – исключение. Он настолько важен, что его описание помещено в пространство имён System.

4. Возможна ситуация, когда во время написания программы тип объектов, с которыми предстоит работать, неизвестен. Способ получения имени класса во время исполнения программы может быть самый разным. Например, вы запрашиваете его у пользователя, или считываете при старте программы из файла конфигурации. В этом случае указанием только имени типа не обойтись. Необходимо указать, в какой именно сборке содержится данный тип. Эту сборку потом необходимо загрузить динамически.


Дата добавления: 2015-11-16; просмотров: 42 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Анализ атрибутов во время выполнения программы| Характеристики типа как целого

mybiblioteka.su - 2015-2024 год. (0.01 сек.)