首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能控制Expando类在某些条件下不允许添加属性/成员?

是否有可能控制Expando类在某些条件下不允许添加属性/成员?
EN

Stack Overflow用户
提问于 2019-03-13 16:08:12
回答 1查看 33关注 0票数 1

据我所知,Kephas中的Expando类允许动态添加新成员。与ExpandoObject in .NET不同的是,我注意到它不是密封的,所以我可以改变它的行为,但我不知道怎么做。

编辑

我的场景是在特定的时间使扩展成为只读的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 18:51:33

试试这个片段:

代码语言:javascript
复制
public class ReadOnlyExpando : Expando
{
    private bool isReadOnly;

    public ReadOnlyExpando()
    {
    }

    public ReadOnlyExpando(IDictionary<string, object> dictionary)
        : base(dictionary)
    {
    }

    public void MakeReadOnly()
    {
        this.isReadOnly = true;
    }

    protected override bool TrySetValue(string key, object value)
    {
        if (this.isReadOnly)
        {
            throw new InvalidOperationException("This object is read only").
        }

        return base.TrySetValue(key, value);
    }
}

对于其他场景,您可能希望检查LazyExpando类,它提供了一种基于函数解析动态值的方法,还可以处理循环引用异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55146402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档