元素未添加到列表.NET Core

时间:2020-04-16 18:16:53

标签: c# generics .net-core

我遇到了一个压力大的问题,我无法将元素添加到列表中,操作不会引发任何异常或任何事情,只是不添加元素。

结构如下。

我有一个正在用作内存数据库的类。在该类中,我有一个带有一些默认值的对象列表。

对象类型是具有以下结构的Author

public class Author 
{
    public Guid Id { get; set; }
    public string Name { get; set; }
}

列表结构是这样

public class InMemoryStore
{
     public List<Author> Authors => new List<Author>
     {
            new Author(new Guid("5784f8b7-31b5-4886-8874-aff5241164a8"), "test"),
     } 
}

我将类注册为作用域服务,然后将其注入到我的测试控制器中,只需执行Add,就不会有任何结果。它不添加项目 它不会引发任何异常。我很困惑。

    private readonly InMemoryStore _inMemoryStore;
    public AuthorsController(InMemoryStore inMemoryStore)
    {
        _inMemoryStore = inMemoryStore;
    }

实际行动

   _inMemoryStore.Authors.Add(author);

在动作中创建相同列表有效

2 个答案:

答案 0 :(得分:5)

我想你是说:

public List<Author> Authors { get; } = new List<Author>
{
    new Author(new Guid("5784f8b7-31b5-4886-8874-aff5241164a8"), "test"),
} 

答案 1 :(得分:3)

您的Authors属性本质上是一个创建列表并返回列表的函数。 基本上与此相同:

    public List<Author> Authors()
    { 
       return new List<Author>() 
       {
           new Author(new Guid("5784f8b7-31b5-4886-8874-aff5241164a8"), "test")
       }
    }

我认为您实际上是想这样做:

     public List<Author> Authors { get; set;} = new List<Author>()
     {
            new Author(new Guid("5784f8b7-31b5-4886-8874-aff5241164a8"), "test"),
     } 

在这种情况下,一个作者将Authors属性初始化为默认值。您可以稍后再添加到该列表。