Принципы объектно-ориентированного программирования

         

Для запуска кода, которому требуется



Примечание

Для запуска кода, которому требуется проверка защиты (например, кода, использующего API отражения) в интрасети, вам придется изменить политику, например, с помощью утилиты Code Access Security Policy (caspol.exe). Вот как это сделать:

caspol -addgroup 1.2 -url "file://somecomputer/someshare/*"

SkipVerification

В этом примере на основе URL запускаемого кода предоставляются дополнительные права доступа, в данном случае SkipVerification. Вы также можете изменить политику для всего кода в данной зоне или только для конкретной сборки в зависимости от его электронной подписи или даже хэша. Для просмотра аргументов утилиты caspol.exe наберите в командной строке caspol - ? или обратитесь к онлайновой документации MSDN.

Первая часть метода Main

не очень-то интересна: этот код определяет, передали ли вы приложению имя сборки. Если нет, то для определения имени исполняемого в текущий момент приложения используется статический метод GetProcessName класса Process.

После этого вы начнете понимать, как легко решать большинство задач с помощью отражения. Легче всего создать экземпляр объекта Assembly, вызвав Assembly. LoadFrom. Этот метод принимает единственный аргумент — строку, представляющую имя физического файла, который вы хотите загрузить. Вызванный после этого метод Assembly.GetTypes возвращает массив объектов Туре. Теперь у нас есть объект, описывающий каждый отдельный тип в целой сборке! В результате приложение выводит имя своего базового класса.

Вот выходная информация, полученная при запуске этого приложения с указанием в качестве параметра файла gettypes.exe или без аргументов вообще:

Loading info for GetTypes.exe

Type information for: DemoAttr Base class = System.Attribute

Type information for: DemoEnum Base class = System.Enum

Type information for: DemoBaseClass Base class = System.Object

Type information for: DemoDerivedClass

Base class = DemoBaseClass

Type information for: DemoStruct Base class = System.Object

Type information for: AssemblyGetTypesApp Base class = System.Object

Содержание раздела