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

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

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

178 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 ... 361 362 363 364 365 366 367 368 369 ... 407
    Перейти на страницу:
    в ErrorContent:

    <ListBox.ItemTemplate>

      <DataTemplate>

        <ListBox ItemsSource="{Binding Path=ErrorContent}"/>

      </DataTemplate>

    </ListBox.ItemTemplate>

    Запустите приложение, выберите автомобиль Chevy и установите цвет в Pink. В окне отобразятся ошибки (рис. 28.4).

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

    Перемещение поддерживающего кода в базовый класс

    Вероятно, вы заметили, что в настоящий момент в классе CarPartial присутствует много кода. Поскольку в рассматриваемом примере есть только один класс модели, проблемы не возникают. Но по мере появления новых моделей в реальном приложении добавлять весь связующий код в каждый частичный класс для моделей нежелательно. Гораздо эффективнее поместить поддерживающий код в базовый класс, что и будет сделано.

    Создайте в папке Models новый файл класса по имени BaseEntity.cs. Добавьте в него операторы using для пространств имен System.Collections и System.ComponentModel. Пометьте класс как открытый и обеспечьте реализацию им интерфейса INotifyDataErrorInfor.

    using System;

    using System.Collections;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Linq;

    namespace Validations.Models

    {

      public class BaseEntity : INotifyDataErrorInfo

    }

    Переместите в новый базовый класс весь код, относящийся к INofityDataErrorInfo, из файла CarPartial.cs. Любые закрытые методы понадобится сделать защищенными. Удалите реализацию интерфейса INotifyDataErrorInfo из класса в файле CarPartial.cs и добавьте BaseEntity в качестве базового класса:

    public partial class Car : BaseEntity, IDataErrorInfo

    {

     // Для краткости код не показан.

    }

    Теперь любые создаваемые классы моделей будут наследовать весь связующий код INotifyDataErrorInfo.

    Использование аннотаций данных в WPF

    Для проверки достоверности в пользовательских интерфейсах инфраструктура WPF способна также задействовать аннотации данных. Давайте добавим несколько аннотаций данных к модели Car.

    Добавление аннотаций данных к модели

    Откройте файл Car.cs и поместите в него оператор using для пространства имен System.ComponentModel.DataAnnotations. Добавьте к свойствам Make, Color и PetName атрибуты [Required] и [StringLength(50)]. Атрибут [Required] определяет правило проверки достоверности, которое регламентирует, что значение свойства не должно быть null (надо сказать, оно избыточно для свойства Id, т.к. свойство не относится к типу int, допускающему null). Атрибут [StringLength(50)] определяет правило проверки достоверности, которое ограничивает длину значения свойства 50 символами.

    Контроль ошибок проверки достоверности на основе аннотаций данных

    В WPF вы должны программно контролировать наличие ошибок проверки достоверности на основе аннотаций данных. Двумя основными классами, отвечающими за проверку достоверности на основе аннотаций данных, являются ValidationContext и Validator. Класс ValidationContext предоставляет контекст для контроля за наличием ошибок проверки достоверности. Класс Validator позволяет проверять, есть ли в объекте ошибки, связанные с аннотациями данных, в ValidationContext.

    Откройте файл BaseEntity.cs и добавьте в него следующие операторы using:

    using System.ComponentModel;

    using System.ComponentModel.DataAnnotations;

    Далее создайте новый метод по имени GetErrorsFromAnnotations(). Это обобщенный метод, который принимает в качестве параметров строковое имя свойства и значение типа Т, а возвращает строковый массив. Он должен быть помечен как protected. Вот его сигнатура:

    protected string[] GetErrorsFromAnnotations<T>(

      string propertyName, T value)

    {}

    Внутри метода GetErrorsFromAnnotations() создайте переменную типа List<ValidationResult>, которая будет хранить результаты выполненных проверок достоверности, и объект ValidationContext с областью действия, ограниченной именем переданного методу свойства. Затем вызовите метод Validate.TryValidateProperty(), который возвращает значение bool. Если все проверки (на основе аннотаций данных) прошли успешно, тогда метод возвращает true. В противном случае он возвратит false и наполнит List<ValidationResult> информацией о возникших ошибках. Полный код выглядит так:

    protected string[] GetErrorsFromAnnotations<T>(

      string propertyName, T value)

    {

      var results = new List<ValidationResult>();

      var vc = new ValidationContext(this, null, null)

        { MemberName = propertyName };

      var isValid = Validator.TryValidateProperty(

        value, vc, results);

      return (isValid)

        ? null

        : Array.ConvertAll(

            results.ToArray(), o => o.ErrorMessage);

    }

    Теперь можете модифицировать метод индексатора в файле CarPartial.cs, чтобы проверять наличие любых ошибок, основанных на аннотациях данных. Обнаруженные ошибки должны добавляться в коллекцию ошибок, поддерживаемую интерфейсом INotifyDataErrorInfo. Это позволяет привести в порядок обработку ошибок. В начале индексаторного метода очистите ошибки для столбца. Затем обработайте результаты проверок достоверности и в заключение предоставьте специальную логику для сущности. Ниже показан обновленный код индексатора:

    public string this[string columnName]

    {

      get

      {

        ClearErrors(columnName);

        var errorsFromAnnotations =

          GetErrorsFromAnnotations(columnName,

            typeof(Car)

            .GetProperty(columnName)?.GetValue(this,null));

        if (errorsFromAnnotations != null)

        {

          AddErrors(columnName, errorsFromAnnotations);

        }

        switch (columnName)

        {

          case nameof(Id):

            break;

          case nameof(Make):

            CheckMakeAndColor();

            if (Make == "ModelT")

            {

              AddError(nameof(Make), "Too Old");

            }

            break;

          case nameof(Color):

            CheckMakeAndColor();

            break;

          case nameof(PetName):

            break;

        }

        return string.Empty;

      }

    }

    Запустите приложение, выберите один из автомобилей и введите в поле Color текст, содержащий более 50 символов. После превышения порога в 50 символов аннотация данных StringLength создает ошибку проверки достоверности, которая сообщается пользователю (рис. 28.5).

    Настройка свойства ErrorTemplate

    Финальной темой является создание стиля, который будет применяться, когда элемент управления содержит ошибку, а также обновление ErrorTemplate для отображения более осмысленного сообщения об ошибке. Как объяснялось в главе 27, элементы управления допускают настройку посредством стилей и шаблонов элементов управления.

    Начните с добавления в раздел Window.Resources файла MainWindow.xaml нового стиля с целевым типом TextBox. Добавьте к стилю триггер, который устанавливает свойства, когда свойство Validation.HasError имеет

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

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


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

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

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


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

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки