Как реализовать свойство List <T>в классе C#? - PullRequest
2 голосов
/ 23 февраля 2020

У меня есть код ниже:

public class Author
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public List<Blog> Blogs { get; set; }
}

и сам класс Blog:

public class Blog
{
    public int Id { get; set; }
    public string Title { get; set; }
    public DateTime PublicationDate { get; set; }
}

Я создаю экземпляр свойства list в классе Program (метод main) следующим образом:

lBlog.Add(new Blog { Id = 1, Title = "War & Peace", PublicationDate = new DateTime(2020, 02, 23) }); 

Пока - хорошо. Но когда я пытаюсь добавить его к объекту автора, он пуст

author.Blogs.AddRange(lBlog);   

Ответы [ 2 ]

3 голосов
/ 23 февраля 2020

Вы должны инициализировать Blogs список в Author конструкторе класса

public class Author
{
    public Author()
    {
        Blogs = new List<Blog>();
    } 

    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public List<Blog> Blogs { get; set; }
}

или использовать для этого инициализатор свойства (он доступен из C# 6). В этом случае имеет смысл сделать свойство readonly (чтобы предотвратить перезапись свойства извне)

public class Author
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public List<Blog> Blogs { get; } = new List<Blog>();
}
2 голосов
/ 23 февраля 2020

Попробуйте это:

public class Author
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Address { get; set; }
        public List<Blog> Blogs { get; set; } = new List<Blog>();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...