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
CSharpCarClient. Вы можете добиться цели с применением Visual Studio (щелкнув правой кнопкой мыши на имени решения и выбрав в контекстном меню пункт Add►New Project (Добавить►Новый проект)) или командной строки (ниже показаны три команды, выполняемые по отдельности):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
dotnet run в каталоге проекта.На заметку!
Для установки ссылки на проект в Visual Studio можно также щелкнуть правой кнопкой мыши на имени проектаCSharpCarClient в окне Solution Explorer, выбрать в контекстном меню пункт Add► Reference (Добавить►Ссылка) и указать 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();