如何修复"删除属性设置器"构建错误?

The*_*max 7 c# asp.net-mvc

我在模型中有一个属性,它具有auto属性getter和setter:

[DataMember]
public Collection<DTOObjects> CollectionName { get; set; }
Run Code Online (Sandbox Code Playgroud)

构建解决方案时出现以下错误:

Microsoft.Usage:通过删除属性setter将'propertyname'更改为只读.

但是,当我删除setter并运行代码时,会发生错误,因为它正在尝试设置属性!它似乎要求我删除setter,尽管它被设置在代码中的某个地方.

有没有其他人来解决这个问题?我需要修改什么?

Mar*_*ell 8

我猜这是一个列表/集合(或类似的东西),在这种情况下是 - 有一个setter是不寻常的.一个典型的例子可能是:

private readonly List<Foo> items = new List<Foo>();
public List<Foo> Items { get { return items; } }
Run Code Online (Sandbox Code Playgroud)

大多数呼叫者应该尝试分配给它; 他们不应该 - 他们可以添加/删除/枚举/清除/等列表而无需分配它.

发生错误,因为它正在尝试设置属性

然后考虑更改该代码,以便它不会尝试设置属性.它不应该需要在几乎所有情况下.

  • @Theomax `obj.Items.Add(newItem)` 或 `obj.Items.AddRange(newItems)` - 在大多数代码中,除了作为初始化程序/构造函数之外,您永远不需要设置集合。 (2认同)