books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:
Язык программирования C#9 и платформа .NET5 - _110.png
Язык программирования C#9 и платформа .NET5 - _111.png

В идеальном случае к настоящему моменту вы уже должны понимать перечисленные ниже ключевые моменты, касающиеся атрибутов .NET Core:

• атрибуты представляют собой классы, производные от

System.Attribute
;

• атрибуты дают в результате встроенные метаданные;

• атрибуты в основном бесполезны до тех пор, пока другой агент не проведет в их отношении рефлексию;

• атрибуты в языке C# применяются с использованием квадратных скобок.

А теперь давайте посмотрим, как реализовывать собственные специальные атрибуты и создавать специальное программное обеспечение, которое выполняет рефлексию по встроенным метаданным.

Построение специальных атрибутов

Первый шаг при построении специального атрибута предусматривает создание нового класса, производного от

System.Attribute
. Не отклоняясь от автомобильной темы, повсеместно встречающейся в книге, создайте новый проект типа Class Library (Библиотека классов) на C# под названием
AttributedCarLibrary
. В этой сборке будет определено несколько классов для представления транспортных средств, каждый из которых описан с использованием специального атрибута по имени
VehicleDescriptionAttribute
:

using System;

// Специальный атрибут.

public sealed class VehicleDescriptionAttribute :Attribute

{

  public string Description { get; set; }

  public VehicleDescriptionAttribute(string description)

   => Description = description;

  public VehicleDescriptionAttribute(){ }

}

Как видите, класс

VehicleDescriptionAttribute
поддерживает фрагмент строковых данных, которым можно манипулировать с помощью автоматического свойства (
Description
). Помимо того факта, что данный класс является производным от
System.Attribute
, ничего примечательного в его определении нет.

На заметку! По причинам, связанным с безопасностью, установившейся практикой в .NET Core считается проектирование всех специальных атрибутов как запечатанных. На самом деле среды Visual Studio и Visual Studio Code предлагают фрагмент кода под названием

Attribute
, который позволяет сгенерировать в окне редактора кода новый класс, производный от
System.Attribute
. Для раскрытия любого фрагмента кода необходимо набрать его имя и нажать клавишу <ТаЬ> (один раз в Visual Studio Code и два раза в Visual Studio).

Применение специальных атрибутов

С учетом того, что класс

VehicleDescriptionAttribute
является производным от
System.Attribute
, теперь можно аннотировать транспортные средства. В целях тестирования добавьте в новую библиотеку классов следующие файлы классов:

// Motorcycle.cs

namespace AttributedCarLibrary

{

  // Назначить описание с помощью &quot;именованного свойства&quot;.

  [Serializable]

  [VehicleDescription(Description = &quot;My rocking Harley&quot;)]

                                  // Мой покачивающийся Харли

  public class Motorcycle

  {

  }

// HorseAndBuggy.cs

namespace AttributedCarLibrary

{

  [Serializable]

  [Obsolete (&quot;Use another vehicle!&quot;)]

  [VehicleDescription(&quot;The old gray mare, she ain't what she used to be...&quot;)]

                    // Старая серая лошадка, она уже не та...

  public class HorseAndBuggy

  {

  }

}

// Winnebago.cs

namespace AttributedCarLibrary

{

  [VehicleDescription(&quot;A very long, slow, but feature-rich auto&quot;)]

                    // Очень длинный, медленный, но обладающий высокими

                    // техническими характеристиками автомобиль

  public class Winnebago

  {

  }

}

Синтаксис именованных свойств

Обратите внимание, что классу

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

По контрасту для типов

HorseAndBuggy
и
Winnebago
синтаксис именованных свойств не используется, а строковые данные просто передаются через специальный конструктор. В любом случае после компиляции сборки
AttributedCarLibrary
с помощью утилиты
ildasm.exe
можно просмотреть добавленные описания метаданных. Например, ниже показано встроенное описание класса
Winnebago
:

// CustomAttribute #1

// -------------------------------------------------------

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


Язык программирования C#9 и платформа .NET5 отзывы

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*