在我的域对象中,我正在使用IList属性映射1:M关系。

为了达到良好的隔离效果,我将其设置为只读:

private IList<PName> _property;
public ReadOnlyCollection<PName> Property
{
    get
    {
        if (_property!= null)
        {
            return new ReadOnlyCollection<PName>(new List<PName>(this._property));
        }
    }
}

我不太喜欢ReadOnlyCollection,但是没有找到使该集合成为只读的接口(interface)解决方案。

现在,我想编辑属性声明,使它在返回空列表时返回空列表,而不是null,因此我以这种方式对其进行了编辑:
if (_property!= null)
{
    return new ReadOnlyCollection<PName>(new List<PName>(this._property));
}
else
{
    return new ReadOnlyCollection<PName>(new List<PName>());
}

但是当我在测试中获得Property时,它始终为null。

最佳答案

如果为IList设置默认值怎么办

private IList<PName> _property = new IList<PName>();
public ReadOnlyCollection<PName> Property
{
    get
    {
        return _property
    }
}

关于c# - 如何返回一个空的ReadOnlyCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18852166/

10-10 15:34