IList<>;即使实例化了成员,属性也保持为null

本文关键字:属性 null 成员 gt lt 实例化 IList | 更新日期: 2023-09-27 18:29:43

我在使用IList属性时遇到问题,该属性似乎总是返回null,即使成员正在实例化:

    private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>();
    public IList<IModelRootEntity> ValidTargets
    {
        get
        {
            return _validTargets as IList<IModelRootEntity>;
        }
        protected internal set
        {
            if (value == null)
                _validTargets.Clear();
            else
                _validTargets = value as List<ModelRootEntity>;
        }
    }

CCD_ 1实现CCD_。我在调试期间观察了这两个值,当成员显示正计数时,属性保持为null。

如果_validTargets_validTargets as List<ModelRootEntity>的计数不同,我还尝试在getter属性中引发一个异常来抛出,但它从未抛出。

发现问题[尽管字典被实例化,但字典属性始终为null,这似乎很相似,但在我的情况下,无论序列化如何,这似乎都会发生。

有什么想法吗?

IList<>;即使实例化了成员,属性也保持为null

如果将属性设置为任何非List<ModelRootEntity>的值,则as表达式将返回null,并且该属性将变为null。

感谢上面的@Nilesh评论,我找到了答案。

更换:

private List<ModelRootEntity> _validTargets = new List<ModelRootEntity>();

带有:

private List<IModelRootEntity> _validTargets = new List<ModelRootEntity>();

暴露了真正的问题。第二行不会编译。以下帖子解释了原因:C#新手列表<界面>问题

唯一奇怪的是,我试图强制执行一个从未抛出的异常,并"抛出"了我。