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 ... 365 366 367 368 369 370 371 372 373 ... 407
    Перейти на страницу:
    class="code">InitializeComponent() и код установки контекста данных для окна в модель представления.

    Создайте открытое свойство типа IList<Car> по имени Cars:

    public IList<Car> Cars { get; } =

      new ObservableCollection<Car>();

    Создайте стандартный конструктор и перенесите в него весь код создания объектов Car из файла MainWindow.xaml.cs, обновив имя списковой переменной. Можете также удалить переменную _cars из MainWindow.xaml.cs. Ниже показан конструктор модели представления:

    public MainWindowViewModel()

    {

      Cars.Add(

        new Car { Id = 1, Color = "Blue", Make = "Chevy",

                  PetName = "Kit", IsChanged = false });

      Cars.Add(

        new Car { Id = 2, Color = "Red", Make = "Ford",

                  PetName = "Red Rider", IsChanged = false });

    }

    Далее переместите весь код, относящийся к командам, из файла отделенного кода окна в модель представления, заменив ссылку на переменную _cars ссылкой на Cars. Вот измененный код:

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

    private void DeleteCar(Car car)

    {

      Cars.Remove(car);

    }

    Обновление кода и разметки MainWindow

    Из файла MainWindow.xaml.cs кода была удалена большая часть кода. Удалите строку, которая устанавливает ItemsSource для поля со списком, оставив только вызов InitializeComponent(). Код должен выглядеть примерно так:

    public MainWindow()

    {

        InitializeComponent();

    }

    Добавьте в начало файла следующий оператор using:

    using WpfViewModel.ViewModels;

    Создайте строго типизированное свойство для хранения экземпляра модели представления:

    public MainWindowViewModel ViewModel { get; set; }

      = new MainWindowViewModel();

    Добавьте свойство DataContext к объявлению окна в разметке XAML:

    DataContext="{Binding ViewModel, RelativeSource={RelativeSource Self}}"

    Обновление разметки элементов управления

    Теперь, когда свойство DataContext для Window установлено в модель представления, потребуется обновить привязки элементов управления в разметке XAML. Начиная с поля со списком, модифицируйте разметку за счет добавления свойства ItemsSource:

    <ComboBox Name="cboCars" Grid.Column="1" DisplayMemberPath="PetName" 

    ItemsSource="{Binding Cars}" />

    Прием работает, т.к. контекстом данных для Window является MainWindowViewModel, a Cars — открытое свойство модели представления. Вспомните, что конструкции привязки обходят дерево элементов до тех пор, пока не найдут контекст данных. Далее понадобится обновить привязки для элементов управления Button. Задача проста; поскольку привязки уже установлены на уровне окна, нужно лишь модифицировать конструкции привязки, чтобы они начинались со свойства DataContext:

    <Button x:Name="btnAddCar" Content="Add Car"

      Margin="5,0,5,0" Padding="4, 2"

      Command="{Binding Path=DataContext.AddCarCmd,

      RelativeSource={RelativeSource Mode=FindAncestor,

                      AncestorType={x:Type Window}}}"

      CommandParameter="{Binding ElementName=cboCars, Path=ItemsSource}"/>

    <Button x:Name="btnDeleteCar" Content="Delete Car"

      Margin="5,0,5,0" Padding="4, 2"

      Command="{Binding Path=DataContext.DeleteCarCmd,

      RelativeSource={RelativeSource Mode=FindAncestor,

      AncestorType={x:Type Window}}}"

      CommandParameter="{Binding ElementName=cboCars, Path=SelectedItem}" />

    <Button x:Name="btnChangeColor" Content="Change Color"

      Margin="5,0,5,0" Padding="4, 2"

      Command="{Binding Path=DataContext.ChangeColorCmd,

      RelativeSource={RelativeSource Mode=FindAncestor,

      AncestorType={x:Type Window}}}"

      CommandParameter="{Binding ElementName=cboCars, Path=SelectedItem}"/>

    Итоговые сведения о моделях представлений

    Верите или нет, но вы только что закончили построение первого WPF-приложения MWM. Вы можете подумать: "Это не реалистичное приложение. Как насчет данных? Данные в примере жестко закодированы". И вы будете совершенно правы. Это не реальное приложение, а лишь демонстрация. Однако в ней легко оценить всю прелесть паттерна MWM. Представлению ничего не известно о том, откуда поступают данные; оно просто привязывается к свойству модели представления. Реализации модели представления можно менять, скажем, использовать версию с жестко закодированными данными во время тестирования и версию, обращающуюся к базе данных, в производственной среде.

    Можно было бы обсудить еще немало вопросов, в том числе разнообразные инфраструктуры с открытым кодом, паттерн "Локатор модели представления" (View Model Locator) и множество разных мнений на предмет того, как лучше реализовывать паттерн MWM. В том и заключается достоинство паттернов проектирования программного обеспечения — обычно существует много правильных способов их реализации, и вам необходимо лишь отыскать стиль, который наилучшим образом подходит к имеющимся требованиям.

    Обновление проекта AutoLot.Dal для MWM

    Если вы хотите обновить проект AutoLot.Dal для MWM, то должны применить изменения, которые вносились в Car, ко всем сущностям в проекте AutoLot.Dal.Models, включая BaseEntity.

    Резюме

    В главе рассматривались аспекты WPF, относящиеся к поддержке паттерна MWM. Сначала было показано, каким образом связывать классы моделей и коллекции с помощью системы уведомлений в диспетчере привязки. Демонстрировалась реализация интерфейса INotifyPropertyChanged и применение классов наблюдаемых коллекций для обеспечения синхронизации пользовательского интерфейса и связанных с ним данных.

    Вы научились добавлять код проверки достоверности к модели с применением интерфейсов IDataErrorInfo и INotifyDataErrorInfо, а также проверять наличие ошибок, основанных на аннотациях данных. Было показано, как отображать обнаруженные ошибки проверки достоверности в пользовательском интерфейсе, чтобы пользователь знал о проблеме и мог ее устранить. Вдобавок был создан стиль и специальный шаблон элементов управления для визуализации ошибок более эффективным способом.

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

    Часть IX

    ASP.NET Core

    Глава 29

    Введение в ASP.NET Core

    В финальной части книги рассматривается ASP.NET Core — последняя версия инфраструктуры для разработки веб-приложений, которая использует C# и .NET Core. В этой главе предлагается введение в инфраструктуру ASP.NET Core и раскрываются ее отличия от предыдущей версии, т.е. ASP.NET.

    После ознакомления с основами паттерна "модель-представление-контроллер" (Model-View-Controller — MVC), реализованного в ASP.NET Core, вы приступите к построению двух приложений, которые будут работать вместе. Первое приложение, REST-служба ASP.NET Core, будет закончено в главе 30. Вторым приложением является веб-приложение ASP.NET Core, созданное с применением паттерна MVC, которое будет завершено в главе 31. Уровнем доступа к данным для обоих приложений послужат проекты AutoLot.Dal и AutoLot.Models, которые вы создали в главе 23.

    Краткий экскурс в прошлое

    Выпуск инфраструктуры ASP.NET MVC в 2007 году принес большой успех компании Microsoft. Инфраструктура базировалась на паттерне MVC и стала ответом разработчикам, разочарованным API-интерфейсом Web Forms, который по существу был ненадежной абстракцией поверх HTTP. Инфраструктура Web Forms проектировалась

    1 ... 365 366 367 368 369 370 371 372 373 ... 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 - Александр Андреевич Бодров
    Все комметарии
    Новинки бесплатной онлайн библиотеки