АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. Ароматические углеводороды (арены). Бензол, электронное и пространственное строение. Промышленное получение и применение бензола. Гомологи бензола.
  2. Аустенитного класса
  3. Биологические особенности гельминтов класса трематод
  4. Биологические особенности гельминтов класса цестод
  5. Большое сухогрузное судно класса «река-море», имеющее трюма с люковыми закрытиями, с двойными бортами и двойным дном, с машинным отделением и надстройкой в кормовой части.
  6. Выбор класса точности ПП.
  7. Диеновые углеводороды (алкадиены): особенности химических свойств сопряженных диенов. Важнейшие представители. Получение и применение в промышленности.
  8. для 2 класса начальной школы
  9. Для спасателей 1-го класса
  10. для учащихся 5 класса на 1 четверть
  11. Задание 1: Получение данных
  12. Задание 1: Получение данных

Получить экземпляр класса 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. Возможна ситуация, когда во время написания программы тип объектов, с которыми предстоит работать, неизвестен. Способ получения имени класса во время исполнения программы может быть самый разным. Например, вы запрашиваете его у пользователя, или считываете при старте программы из файла конфигурации. В этом случае указанием только имени типа не обойтись. Необходимо указать, в какой именно сборке содержится данный тип. Эту сборку потом необходимо загрузить динамически.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)