我遇到了一个压力大的问题,我无法将元素添加到列表中,操作不会引发任何异常或任何事情,只是不添加元素。
结构如下。
我有一个正在用作内存数据库的类。在该类中,我有一个带有一些默认值的对象列表。
对象类型是具有以下结构的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);
在动作中创建相同列表有效
答案 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属性初始化为默认值。您可以稍后再添加到该列表。