« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга

Создание сайта за 3999 руб.!

ПнВтСрЧтПтСбВс
        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
    Популярное
Функция AccessResource

Драйвер с нуля

Visual C++ и MFC. Руководство для профессионалов

Целостность данных

Выражение

ГЛАВА 5 Создание валидных XML-документов

Безопасность TCP/IP

Вывод в поле диалогового окна

Oracle Database 10g: интеграция и способность информации к соединению

Microsoft SQL Server 2005 - наиболее полная платформа в каждом ценовом сегменте




    Архив файлов



    Сообщества



    Документация

Статьи:: .NET Framework :: Классы каркаса .NET Framework :: Класс туре (Тип)


отправить ссылку другу версия для печати  Обсудить на форуме

Класс туре (Тип)



Абстрактный класс Туре (Тип) в пространстве имен System (Система) определяет типы .NET. Поскольку в .NET нет никаких функций вне классов или глобальных переменных, то получив все типы в сборке, мы получим все метаданные о коде в этой сборке. Туре (Тип) представляет все типы, имеющиеся в .NET: классы, структуры, интерфейсы, значения, массивы и перечисления.



Класс Туре (Тип) возвращается также методом GetType класса System::0bject (Система::Объект) и статическим методом GetType самого класса Туре (Тип). Последний метод может использоваться только с типами, которые могут быть разрешены статически.

Одно из свойств класса Туре (Тип) — сборка, к которой он принадлежит. Можно получить все типы, содержащиеся в сборке, как только будет определен Туре (Тип) одного объекта. Туре (Тип) — абстрактный класс, и во время выполнения возвращается экземпляр System::RuntimeType.
В выдаче программы найден каждый тип в сборке, — CustomerListltem, ICustomer, Customer (Клиент) и Customers (Клиенты),— причем распечатаны его метаданные. Чтобы для каждого типа выяснить стандартные атрибуты и тип, производным от которого является класс, нужно воспользоваться свойствами Attributes (Атрибуты) и BaseType.

Методы, связанные с классом Туре (Тип), дают возможность получить ассоциированные поля, свойства, интерфейсы, события, и методы. Например, тип Customer (Клиент) не имеет никаких интерфейсов, свойств и событий, но имеет четыре поля, три конструктора и методы, унаследованные от его базового класса BaseType из пространства имен System::Object (Система::Объект):
Можно также загрузить и выполнить сборку с AppDomain, — мы обсудим этот вариант в данной главе позже.

Interfaces: Fields:
Customerld
FirstName
LastName
EmailAddress Properties:
Events:
Constructors:
public .ctor(System.String first, System.String last,
System.String email)
public .ctor()
public .ctor(System.Int32 id) Methods:
public Int32 GetHashCodeO
public Boolean Equals(System.Object obj)
public String ToStringO
public Type GetType()

Перевод такой:

Интерфейсы: Поля:
Customerld
FirstName
LastName
EmailAddress Свойства:
События:
Конструкторы:
public .ctor(System.String first, System.String last,
System.String email)
// электронная почта
public.ctor ()
public .ctor(System.Int32 id) Методы:
public Int32 GetHashCodeO
public Boolean Equals(System.Object obj)
// Равняется
public String ToString()
public Type GetType()

Тип Customers (Клиенты) наследуется от одного интерфейса и содержит один конструктор и четыре своих собственных метода в дополнение к четырем уже унаследованным от его базового класса BaseType из пространства имен System: :Object (Система-Объект):

Interfaces:
ICustomer
Fields:
Properties:
Events:
Constructors:
public .ctor()
Methods:
public Void ChangeEmailAddress(System.Int32 id,
System.String emailAddress)
public ArrayList GetCustomer(System.Int32 id)
public Void UnregisterCustomer(System.Int32 id)
public Int32 RegisterCustomer(System.String firstName,
System.String lastName, System.String emailAddress)
public Int32 GetHashCode()
public Boolean Equals(System.Object obj )
public String ToString ()
public Type GetTypeO()

Перевод такой:

Интерфейсы:
ICustomer
Поля:
Свойства:
События:
Конструкторы:
public .ctor() Методы:
public Void ChangeEmailAddress(System.Int32 id,
System.String emailAddress)
public ArrayList GetCustomer(System.Int32 id)
public Void UnregisterCustomer(System.Int32 id)
public Int32 RegisterCustomer(System.String firstName,
System.String lastName, System.String emailAddress)
public Int32 GetHashCode()
public Boolean Equals(System.Object obj )
public String ToString()
public Type GetType()

Вся эта информация была получена с помощью методов Getlnterfaces, GetFields, GetProperties, GetEvents, GetConstructors И GetMethods класса Type (Тип). Поскольку интерфейс — тип, Getlnterfaces возвращает массив объектов Туре (Тип), представляющий интерфейсы, унаследованные или реализованные запрошенным типом Туре (Тип). А так как поля, свойства, события, и методы — не типы, их методы средств доступа не возвращают объекты Туре (Тип). Каждый из их методов доступа возвращает соответствующий класс: Fieldlnfo, Propertylnfo, Eventlnfo, Constructorlnfо и Methodlnf о. Все эти классы, а также класс Туре (Тип), — производные от класса Memberlnfo, который является абстрактным базовым классом для элементов метаданных.
Давайте рассмотрим некоторые из метаданных, связанные с методом класса. Используя методы отражения, мы можем восстановить сигнатуры для всех классов и интерфейсов в сборке Customer (Клиент). Вот распечатка для методов класса Customer (Клиент):

public Void ChangeEmailAddress(System.Int32 id,
System.String emailAddress)
public ArrayList GetCustomer(System.Int32 id)
public Void UnregisterCustomer(System.Int32 id)
public Int32 RegisterCustomer(System.String firstName,
System.String lastName, System.String emailAddress)
public Int32 GetHashCode()
public Boolean Equals(System.Object obj)
public String ToString()
public Type GetType()

Вот код, с помощью которого была получена эта распечатка:

for (int j = 0; j < methodlnfо.Length; j++)
{
if (methodlnfo[j]->IsStatic)
Console::Write (" static "); // статический
if (methodlnfo[j]->IsPublic)
Console::Write(" public ");
if (methodlnfo[j]->IsFamily)
Console::Write(" protected "}; // защищенный
if (methodlnfo[j]->IsAssembly)
Console::Write(" internal "); // внутренний
if (methodlnfо[j]->IsPrivate)
Console::Write(" private "); // частный
Console::Write(
"{0} ", methodlnfo[j]->ReturnType->Name); // Имя
Console::Write( // Запись
"{0}(", methodlnfo[j]->Name); // Имя
Parameterlnfo *paramlnfo [] =
methodlnfo[j]->GetParameters(};
long last = paramlnfo->Length - 1;
for (int k = 0; k<param!nfo->Length; k++)
{
Console::Write( // Запись
"{0} {1}",
paramlnfо[k]->ParameterType,
paramlnfо[k]->Name); // Имя
if (k != last) // если не последний
Console::Write(", "); // Запись
}
Console::WriteLine(")");
}

За исключением того, что конструктор не возвращает переменную какого-нибудь типа, тот же самый код воспроизводит вызывающие последовательности для конструкторов класса.
Класс Methodlnfo содержит свойства, с помощью которых можно определить, является ли метод статическим, приватным, защищенным или внутренним, а также возвращаемый тип (тип результата) и название метода. Параметры метода сохраняются в массиве свойств типа (класса) Parameterlnfo.
Этот пример показывает, что типы относятся к сборкам. Два типа, имеющие одинаковые имена, но размещенные в двух различных сборках, трактуются во время выполнения как два разных типа. Нужно быть внимательным при смешивании различных версий типов или тех же самых типов в двух различных сборках.
Все эти метаданные позволяют общеязыковой среде времени выполнения CLR и каркасу предоставлять услуги прикладным программам, потому что они могут понять структуру созданных нами типов.








ASP.NET и немного поисковой оптимизации.

Советы

С тех пор, как появилась Альтависта, большинство посетителей стали приходить на сайты из поисковых машин. И головной боли стало больше. Теперь мало написать сайт, нужно сделать его совместимым с поисковыми ботами. Одна из тех задач, которую приходится решать — быстрая переиндексация обновлений на сайте. Поисковые роботы чаще посещают те сайты, которые чаще меняются.


Подробнее... | Рубрика: Советы | Добавлено: 30.07.2008

Protocol buffers: библиотека обмена данными для C++, Java, Python от Google.

Программирование для Web на C

Наконец-то я могу поделиться тем, чему уже давно радуюсь сам: Google открывает исходники Protocol Buffers! Что это и почему надо радоваться? Это простой и удобный способ обмена данными. Можно сказать, альтернатива XML, но гораздо менее амбициозная и (поэтому) более быстрая и компактная. Далее - перевод отрывка анонса в блоге Open Source at Google и пример использования.


Подробнее... | Рубрика: Программирование для Web на C | Добавлено: 30.07.2008

Описание VivaVisualCode.

VivaCore

В данной статье рассмотрена программа VivaVisualCode, демонстрирующая использование библиотеки VivaCore. Программа VivaVisualCode графически отображает дерево разбора для вводимого исходного кода на языке Си++.


Подробнее... | Рубрика: VivaCore | Добавлено: 29.07.2008

Остальные статьи:

JQuery: Пара сотен плагинов в одной заметке
Касание сетки
Разработка элементов управления ASP.NET на примере навигационной панели
Сохранения параметров приложения в .Net
Custom cursors в .Net
Бегун убегает от хозяина
"Битрикс" выпустил седьмую версию CMS
Выбираем систему управления сайтом
Рынок CMS в Европе или впечатления с CeBIT 2008
32 подводных камня OpenMP при программировании на Си++
Проeкт - шифровка
А что если..? (операторы if...else в C#)
Измерение скорости работы скрипта
О том как разработчики пьют кофе
Работаем с LINQ to XML
XmlSerializer - Assembly Leak без спроса


Цитата дня (все,добавить):



    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование

Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 97
Пользователей: 0