Задать вопрос

Как в C# инициализировать required поля через конструктор?

Я пишу приложение и узнал про required поля, которые я решил использовать для того, чтобы делать поля, которые должны быть обязательные в DataGrid.

И я решил повторить код из документации к Avalonia UI, но с использованием required полей:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace QuizApplication.ViewModels.MainPagesViewModels
{
    public partial class HomePageViewModel : ViewModelBase
    {
        DateOnly dateOnly = new();


        public ObservableCollection<Person> People { get; }

        public HomePageViewModel()
        {
            List<Person> people = new()
            {
                new("John", "Smith", dateOnly)
            };

            People = new ObservableCollection<Person>(people);
        }
    }

    public class Person
    {
        public required string User { get; init; }

        public required string RatingOfUser { get; init; }

        public required DateOnly Date { get; init; }

        public Person(string user,
                      string ratingOfUser,
                      DateOnly date)
        {
            User = user;
            RatingOfUser = ratingOfUser;
            Date = date;
        }
    }
}

И в таком случае мне лезет ошибка Required member 'Person.User' must be set in the object initializer or attribute constructor.
Однако при такой инициализации ошибки нет:

new Person()
{
    User = "John Smith",
    RatingOfUser = "Excellent",
    Data = DateTime.Today.Date
}

Но эта инициализация слишком многословная, можно ли сделать инициализацию просто через конструктор, как я попытался в первом случае?
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
Добавь атрибут SetsRequiredMembers для конструктора
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы