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

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

Книгу Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

177 0 18:04, 26-08-2023
Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
26 август 2023

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

    1 ... 358 359 360 361 362 363 364 365 366 ... 407
    Перейти на страницу:
    (встроенное или специальное) нарушается, то в игру вступает класс Validation, который обсуждается позже в главе.

    На заметку! В каждом разделе главы можно продолжить работу с проектом из предыдущего раздела или создать копию проекта, специально предназначенную для нового раздела. Всем последующим разделам соответствуют отдельные проекты, которые доступны в каталоге с кодом для настоящей главы внутри хранилища GitHub.

    Модификация примера для демонстрации проверки достоверности

    В каталоге для этой главы внутри хранилища GitHub новый проект (скопированный из предыдущего примера) называется WpfValidations. Если вы работаете с тем же самым проектом, созданным в предыдущем разделе, то при копировании в свой проект кода из примеров, приведенных в текущем разделе, просто должны обращать внимание на изменения пространств имен.

    Класс Validation

    Прежде чем добавлять проверку достоверности в проект, важно понять назначение класса Validation. Он входит в состав инфраструктуры проверки достоверности и предоставляет методы и присоединяемые свойства, которые могут применяться для отображения результатов проверки. При обработке ошибок проверки обычно используются три основных свойства класса Validation, кратко описанные в табл. 28.2. Они будут применяться далее в разделе.

    Варианты проверки достоверности

    Как упоминалось ранее, технологии XAML поддерживают несколько механизмов для встраивания логики проверки достоверности внутрь приложения. В последующих разделах рассматриваются три самых распространенных варианта проверки.

    Уведомление по исключениям

    Хотя исключения не должны использоваться для обеспечения выполнения бизнес-логики, они могут (и будут) возникать, а потому требуют надлежащей обработки. Если исключения не обработаны в коде, тогда пользователь должен получить визуальную обратную связь об имеющейся проблеме. В отличие от Windows Forms в инфраструктуре WPF исключения привязки (по умолчанию) не распространяются до пользователя как собственно исключения. Тем не менее, они указываются визуально с применением декоратора (визуального уровня, который находится над элементами управления).

    Запустите приложение, выберите запись в элементе ComboВох и очистите значение в текстовом поле Id. Поскольку свойство Id определено как имеющее тип int (не тип int, допускающий null), требуется числовое значение. После покидания поля Id по нажатию клавиши <ТаЬ> механизм привязки отправляет свойству CarId пустую строку, но из-за того, что пустая строка не может быть преобразована в значение int, внутри блока set генерируется исключение. В нормальных обстоятельствах необработанное исключение привело бы к отображению окна сообщения пользователю, но в данном случае ничего подобного не происходит. Взглянув на порцию Debug (Отладка) окна Output (Вывод), вы заметите следующие строки:

    System.Windows.Data Error: 7 : ConvertBack cannot convert value '' (type 'String').

    BindingExpression:Path=Id; DataItem='Car' (HashCode=52579650); target element is

    'TextBox' (Name=''); target property is 'Text' (type 'String') FormatException:'System.

    FormatException: Input string was not in a correct format.

    Ошибка System.Windows.Data: 7 : ConvertBack не может преобразовать (типа String).

    BindingExpression : Path=Id; DataItem='Car' (HashCode=52579650);

    целевой элемент - TextBox (Name=''); целевое свойство - Text

    (типа String) FormatExceptionSystem.FormatException:

    Входная строка не имела корректный формат.

    Визуально исключение представляется с помощью тонкого прямоугольника красного цвета вокруг элемента управления (рис. 28.2).

    Прямоугольник красного цвета — это свойство ErrorTemplate объекта Validation, которое действует в качестве декоратора для связанного элемента управления. Несмотря на то что стандартный внешний вид говорит о наличии ошибки, нет никакого указания на то, что именно пошло не так. Хорошая новость в том, что шаблон отображения ошибки в свойстве ErrorTemplate является полностью настраиваемым, как вы увидите позже в главе.

    Интерфейс IDataErrorInfo

    Интерфейс IDataErrorInfo предоставляет механизм для добавления специальной проверки достоверности в классы моделей. Данный интерфейс добавляется прямо в классы моделей (или моделей представлений), а код проверки помещается внутрь классов моделей (предпочтительно в частичные классы). Такой подход централизует код проверки достоверности в проекте, что совершенно не похоже на инфраструктуру Windows Forms, где проверка обычно делалась в самом пользовательском интерфейсе.

    Показанный далее интерфейс IDataErrorInfo содержит два свойства: индексатор и строковое свойство по имени Error. Следует отметить, что механизм привязки WPF не задействует свойство Error.

    public interface IDataErrorInfo

    {

      string this[string columnName] { get; }

      string Error { get; }

    }

    Вскоре вы добавите частичный класс Car, но сначала необходимо модифицировать класс в файле Car.cs, пометив его как частичный. Добавьте в папку Models еще один файл по имени CarPartial.cs. Переименуйте этот класс в Car, пометьте его как partial и обеспечьте реализацию классом интерфейса IDataErrorInfo. Затем реализуйте члены интерфейса IDataErrorInfo. Вот начальный код:

    public partial class Car : IDataErrorInfo

    {

      public string this[string columnName] => string.Empty;

      public string Error { get;}

    }

    Чтобы привязанный элемент управления мог работать с интерфейсом IDataErrorInfo, в выражение привязки потребуется добавить ValidatesOnDataErrors. Модифицируйте выражение привязки для текстового поля Make следующим образом (и аналогично обновите остальные конструкции привязки):

    <TextBox Grid.Column="1" Grid.Row="1"

          Text="{Binding Path=Make, ValidatesOnDataErrors=True}" />

    После внесения изменений в конструкции привязки индексатор вызывается на модели каждый раз, когда возникает событие PropertyChanged. В качестве параметра columnName индексатора используется имя свойства из события. Если индексатор возвращает string.Empty, то инфраструктура предполагает, что все проверки достоверности прошли успешно и какие-либо ошибки отсутствуют. Если индексатор возвращает значение, отличающееся от string.Empty, тогда в свойстве для данного объекта присутствует ошибка, из-за чего каждый элемент управления, привязанный к этому свойству специфического экземпляра класса, считается содержащим ошибку. Свойство HasError объекта Validation устанавливается в true и активизируется декоратор ErrorTemplate для элементов управления, на которые повлияла ошибка.

    Добавьте простую логику проверки достоверности к индексатору в файле CorePartial.cs. Правила проверки элементарны :

    • если Make равно ModelT, то установить сообщение об ошибке в "Too Old" (слишком старая модель);

    • если Make равно Chevy и Color равно Pink, то установить сообщение об ошибке в $" {Make}'s don't come in {Color}" (модель в таком цвете не поставляется).

    Начните с добавления оператора switch для каждого свойства. Во избежание применения "магических" строк в операторах case вы снова будете использовать операцию

    1 ... 358 359 360 361 362 363 364 365 366 ... 407
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


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

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

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


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Лариса Лариса04 июнь 12:43 Да, просто до слез похоже на сериал ,,Даррел,,... Смерть в райском уголке - Эмили Салливан
    2. Stmara Stmara02 июнь 22:44 Приятная история, чтобы скоротать вечер. Любимая книга из последних "Любовь со смертью", также очень понравилась -"Суженная... Сердце космического дракона - Ольга Вадимовна Гусейнова
    3. Alex Alex01 июнь 17:12 💩💩💩🖕🖕🖕🖕🖕🖕🖕... Игровой момент II - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки