Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 307 308 309 310 311 312 313 314 315 ... 642

Исследование метаданных типов

Прежде чем приступить к созданию приложений, в которых задействована ваша специальная библиотека .NET Core, давайте займемся исследованием метаданных для типов внутри сборки CarLibrary.dll. Скажем, вот определение TypeDef для типа EnginestateEnum:

TypeDef #1 (02000002)

-------------------------------------------------------

 TypDefName: CarLibrary.EngineStateEnum

 Flags     : [Public] [AutoLayout] [Class] [Sealed] [AnsiClass]

 Extends   : [TypeRef] System.Enum

Field #1

-------------------------------------------------------

 Field Name: value__

 Flags     : [Public] [SpecialName] [RTSpecialName]

 CallCnvntn: [FIELD]

 Field type:  I4

Field #2

-------------------------------------------------------

 Field Name: EngineAlive

 Flags     : [Public] [Static] [Literal] [HasDefault]

 DefltValue: (I4) 0

 CallCnvntn: [FIELD]

 Field type:  ValueClass CarLibrary.EngineStateEnum

Field #3

-------------------------------------------------------

 Field Name: EngineDead

 Flags     : [Public] [Static] [Literal] [HasDefault]

 DefltValue: (I4) 1

 CallCnvntn: [FIELD]

 Field type:  ValueClass CarLibrary.EngineStateEnum

Как будет объясняться в следующей главе, метаданные сборки являются важным элементом платформы .NET Core и служат основой для многочисленных технологий (сериализация объектов, позднее связывание, расширяемые приложения и т.д.). В любом случае теперь, когда вы заглянули внутрь сборки CarLibrary.dll, можно приступать к построению клиентских приложений, в которых будут применяться типы из сборки.

Построение клиентского приложения C#

Поскольку все типы в CarLibrary были объявлены с ключевым словом public, другие приложения .NET Core имеют возможность пользоваться ими. Вспомните, что типы могут также определяться с применением ключевого слова internal языка C# (на самом деле это стандартный режим доступа в C# для классов). Внутренние типы могут использоваться только в сборке, где они определены. Внешние клиенты не могут ни видеть, ни создавать экземпляры типов, помеченных ключевым словом internal.

На заметку! Исключением из указанного правила является ситуация, когда сборка явно разрешает доступ другой сборке с помощью атрибута InternalsVisibleTo, который вскоре будет рассмотрен.

Чтобы воспользоваться функциональностью вашей библиотеки, создайте в том же решении, где находится CarLibrary, новый проект консольного приложения C# по имени CSharpCarClient. Вы можете добиться цели с применением Visual Studio (щелкнув правой кнопкой мыши на имени решения и выбрав в контекстном меню пункт AddNew Project (Добавить►Новый проект)) или командной строки (ниже показаны три команды, выполняемые по отдельности):

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

dotnet new console -lang c# -n CSharpCarClient -o .CSharpCarClient -f net5.0

dotnet add CSharpCarClient reference CarLibrary

dotnet sln .Chapter16_AppRojects.sln add .CSharpCarClient

Приведенные команды создают проект консольного приложения, добавляют к нему ссылку на проект CarLibrary и вставляют его в имеющееся решение.

На заметку! Команда add reference создает ссылку на проект, что удобно на этапе разработки, т.к. CSharpCarClient будет всегда использовать последнюю версию CarLibrary. Можно также ссылаться прямо на сборку. Прямые ссылки создаются за счет указания скомпилированной библиотеки классов.

Если решение все еще открыто в Visual Studio, тогда вы заметите, новый проект отобразится в окне Solution Explorer безо всякого вмешательства с вашей стороны.

Наконец, щелкните правой кнопкой мыши на имени CSharpCarClient в окне Solution Explorer и выберите в контекстном меню пункт Set as Startup Project (Установить как стартовый проект). Если вы не работаете в Visual Studio, то можете запустить новый проект, введя команду dotnet run в каталоге проекта.

На заметку! Для установки ссылки на проект в Visual Studio можно также щелкнуть правой кнопкой мыши на имени проекта CSharpCarClient в окне Solution Explorer, выбрать в контекстном меню пункт AddReference (Добавить►Ссылка) и указать CarLibrary в узле проекта.

Теперь вы можете строить клиентское приложение для использования внешних типов. Модифицируйте начальный файл кода С#, как показано ниже:

using System;

// Не забудьте импортировать пространство имен CarLibrary!

using CarLibrary;

Console.WriteLine("***** C# CarLibrary Client App *****");

// Создать объект SportsCar.

SportsCar viper = new SportsCar("Viper", 240, 40);

viper.TurboBoost();

// Создать объект MiniVan.

MiniVan mv = new MiniVan();

mv.TurboBoost();

Console.WriteLine("Done. Press any key to terminate");

// Готово. Нажмите любую клавишу для прекращения работы

1 ... 307 308 309 310 311 312 313 314 315 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий