是否有可能控制扩张类别以不允许在某些条件下添加属性/成员



据我所知,kepass中的Expando类允许即时添加新成员。与.net中的ExpandoObject不同,我注意到它没有密封,所以我可以改变其行为,但我真的不知道如何。

[编辑]

我的场景是在一定时间进行Expando ReadOnly。

尝试此片段:

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类,该类提供了一种基于功能解决动态值的方法,还处理循环引用异常。

相关内容

  • 没有找到相关文章