Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Исследование метаданных типов
Прежде чем приступить к созданию приложений, в которых задействована ваша специальная библиотека .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
internal
internal
На заметку! Исключением из указанного правила является ситуация, когда сборка явно разрешает доступ другой сборке с помощью атрибута
InternalsVisibleTo
Чтобы воспользоваться функциональностью вашей библиотеки, создайте в том же решении, где находится
CarLibrary
CSharpCarClient
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
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");
// Готово. Нажмите любую клавишу для прекращения работы