Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Финальная задача связана с отображением метаданных, предоставляемых атрибутом
[CompanyInfo]DisplayCompanyData()System.Туреstatic void DisplayCompanyData(Type t){ // Получить данные [CompanyInfo]. var compInfo = t .GetCustomAttributes(false) .Where(ci => (ci is CompanyInfoAttribute)); // Отобразить данные. foreach (CompanyInfoAttribute c in compInfo) { Console.WriteLine($"More info about {c.CompanyName} can be found at {c.CompanyUrl}"); }}Наконец, модифицируйте операторы верхнего уровня следующим образом:
Console.WriteLine("***** Welcome to MyTypeViewer *****");string typeName = "";do{ Console.WriteLine("nEnter a snapin to load"); // Введите оснастку для загрузки Console.Write("or enter Q to quit: "); // или Q для завершения // Получить имя типа. typeName = Console.ReadLine(); // Желает ли пользователь завершить работу? if (typeName.Equals("Q", StringComparison.OrdinalIgnoreCase)) { break; } // Попытаться отобразить тип. try { LoadExternalModule(typeName); } catch (Exception ex) { // Найти оснастку не удалось. Console.WriteLine("Sorry, can't find snapin"); }}while (true);На этом создание примера расширяемого приложения завершено. Вы смогли увидеть, что представленные в главе приемы могут оказаться весьма полезными, и их применение не ограничивается только разработчиками инструментов.
Резюме
Рефлексия является интересным аспектом надежной объектно - ориентированной среды. В мире .NET Core службы рефлексии вращаются вокруг класса
System.ТуреSystem.ReflectionПозднее связывание представляет собой процесс создания экземпляра типа и обращения к его членам без предварительного знания имен членов типа. Позднее связывание часто является прямым результатом динамической загрузки, которая позволяет программным образом загружать сборку .NET Core в память. На примере построения расширяемого приложения было продемонстрировано, что это мощный прием, используемый разработчиками инструментов, а также их потребителями.
Кроме того, в главе была исследована роль программирования на основе атрибутов. Снабжение типов атрибутами приводит к дополнению метаданных лежащей в основе сборки.
Глава 18
Динамические типы и среда DLR
В версии .NET 4.0 язык C# получил новое ключевое слово
dynamicВ настоящей главе вы узнаете о ключевом слове dynamic и о том, как слабо типизированные вызовы отображаются на корректные объекты в памяти с применением исполняющей среды динамического языка (Dynamic Language Runtime — DLR). После освоения служб, предлагаемых средой DLR, вы увидите примеры использования динамических типов для облегчения вызова методов с поздним связыванием (через службы рефлексии) и простого взаимодействия с унаследованными библиотеками СОМ.
На заметку! Не путайте ключевое слово
dynamicdynamicРоль ключевого слова dynamic языка C#
В главе 3 вы ознакомились с ключевым словом
varЧтобы приступить к исследованию ключевого слова
dynamicDynamicKeywordProgramstatic void ImplicitlyTypedVariable(){ // Переменная а имеет тип List<int>. var a = new List<int> {90}; // Этот оператор приведет к ошибке на этапе компиляции! // a = "Hello";Похожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.