Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 350
- Предыдущая
- 350/642
- Следующая
Указание ссылок на внешние сборки в CIL
Скопируйте файлы
global.jsonNuGet.configCILTypes.ilproj<Project Sdk="Microsoft.NET.Sdk.IL"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <MicrosoftNetCoreIlasmPackageVersion> 5.0.0-preview.1.20120.5 </MicrosoftNetCoreIlasmPackageVersion> <ProduceReferenceAssembly>false</ProduceReferenceAssembly> </PropertyGroup></Project>Затем создайте в текстовом редакторе новый файл по имени
CILTypes.ilSystem.Runtime.dll.assemblyexternalSystem.Runtime.dll.publickeytoken.ver.assembly extern System.Runtime{ .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) .ver 5:0:0:0}Определение текущей сборки в CIL
Следующее действие заключается в определении создаваемой сборки с использованием директивы
.assembly<b>// Наша сборка.</b>.assembly CILTypes{}Хотя такой код действительно определяет новую сборку .NET Core, обычно внутрь объявления будут помещаться дополнительные директивы. В рассматриваемом примере определение сборки необходимо снабдить номером версии 1.0.0.0 посредством директивы
.ver<b>// Наша сборка.</b>.assembly CILTypes{<b> .ver 1:0:0:0</b>}Из-за того, что сборка
CILTypes.moduleCILTypes.dll// Наша сборка.assembly CILTypes{ .ver 1:0:0:0}// Модуль нашей однофайловой сборки..module CILTypes.dllКроме
.assembly.module
Определение пространств имен в CIL
Определив внешний вид и поведение сборки (а также обязательные внешние ссылки), вы можете создать пространство имен .NET Core (
MyNamespace.namespace<b>// Наша сборка имеет единственное пространство имен.</b>.namespace MyNamespace {}Подобно C# определения пространств имен CIL могут быть вложены в другие пространства имен. Хотя здесь нет нужды определять корневое пространство имен, ради интереса посмотрим, как создать корневое пространство имен
MyCompany.namespace MyCompany{ .namespace MyNamespace {}}Как и С#, язык CIL позволяет определить вложенное пространство имен следующим образом:
<b>// Определение вложенного пространства имен.</b>.namespace MyCompany.MyNamespace {}Определение типов классов в CIL
Пустые пространства имен не особо интересны, поэтому давайте рассмотрим процесс определения типов классов в CIL. Для определения нового типа класса предназначена директива
.classMyBaseClassSystem.Object.namespace MyNamespace{<b> // Предполагается базовый класс System.Object.</b> .class public MyBaseClass {}}При построении типа, производного не от класса
System.ObjectextendsMyBaseClass- Предыдущая
- 350/642
- Следующая
