为什么这个`set`访问器不起作用?

时间:2015-11-15 01:52:09

标签: c# .net oop

我的模型中有以下属性:

//PRODUCTS
private ICollection<int> _productIds;

[NotMapped]
public ICollection<int> ProductIds
{
    get { return Products.Select(s => s.Id).ToList(); }
    set { _productIds = value; }
}

当我的代码返回此模型的新实例时,set访问者似乎没有。换句话说,我可以看到get访问者正在正确地返回产品ID的集合,但是当我尝试使用set进行分配时,该值为空List<int>。例如:

var result = new Application
{
    Id = application.Id,
    . . .
    ProductIds = application.ProductIds //<--this is a list of integers, 
                        // but the new "result" object shows an empty list.
};

1 个答案:

答案 0 :(得分:3)

让一个属性使用getset来处理不同来源是非常不寻常的。如果你总是从其他地方读取值,你可能想要完全删除set。

也许您正在寻找覆盖属性的值(即单元测试),如下所示:

    [NotMapped]
    public ICollection<int> ProductIds
    {
        get { return _productIds != null ?
             _productIds // return one that was "set"
             : Products.Select(s => s.Id).ToList(); // read from DB
        } 
        set { _productIds = value; }
    }