Для запуска кода, которому требуется
Примечание
Для запуска кода, которому требуется проверка защиты (например, кода, использующего 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
Содержание раздела