Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
Исследование метаданных типов
Прежде чем приступить к созданию приложений, в которых задействована ваша специальная библиотека .NET Core, давайте займемся исследованием метаданных для типов внутри сборки
CarLibrary.dllTypeDefEnginestateEnumTypeDef #1 (02000002)------------------------------------------------------- TypDefName: CarLibrary.EngineStateEnum Flags : [Public] [AutoLayout] [Class] [Sealed] [AnsiClass] Extends : [TypeRef] System.EnumField #1------------------------------------------------------- Field Name: value__ Flags : [Public] [SpecialName] [RTSpecialName] CallCnvntn: [FIELD] Field type: I4Field #2------------------------------------------------------- Field Name: EngineAlive Flags : [Public] [Static] [Literal] [HasDefault] DefltValue: (I4) 0 CallCnvntn: [FIELD] Field type: ValueClass CarLibrary.EngineStateEnumField #3------------------------------------------------------- Field Name: EngineDead Flags : [Public] [Static] [Literal] [HasDefault] DefltValue: (I4) 1 CallCnvntn: [FIELD] Field type: ValueClass CarLibrary.EngineStateEnumКак будет объясняться в следующей главе, метаданные сборки являются важным элементом платформы .NET Core и служат основой для многочисленных технологий (сериализация объектов, позднее связывание, расширяемые приложения и т.д.). В любом случае теперь, когда вы заглянули внутрь сборки
CarLibrary.dllПостроение клиентского приложения C#
Поскольку все типы в
CarLibrarypublicinternalinternalНа заметку! Исключением из указанного правила является ситуация, когда сборка явно разрешает доступ другой сборке с помощью атрибута
InternalsVisibleToЧтобы воспользоваться функциональностью вашей библиотеки, создайте в том же решении, где находится
CarLibraryCSharpCarClientdotnet new console -lang c# -n CSharpCarClient -o .CSharpCarClient -f net5.0dotnet add CSharpCarClient reference CarLibrarydotnet sln .Chapter16_AppRojects.sln add .CSharpCarClientПриведенные команды создают проект консольного приложения, добавляют к нему ссылку на проект
CarLibraryНа заметку! Команда
add referenceCSharpCarClientCarLibraryЕсли решение все еще открыто в Visual Studio, тогда вы заметите, новый проект отобразится в окне Solution Explorer безо всякого вмешательства с вашей стороны.
Наконец, щелкните правой кнопкой мыши на имени
CSharpCarClientdotnet runНа заметку! Для установки ссылки на проект в Visual Studio можно также щелкнуть правой кнопкой мыши на имени проекта
CSharpCarClientCarLibraryТеперь вы можете строить клиентское приложение для использования внешних типов. Модифицируйте начальный файл кода С#, как показано ниже:
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");// Готово. Нажмите любую клавишу для прекращения работы