据我所知,Kephas中的Expando类允许动态添加新成员。与ExpandoObject in .NET不同的是,我注意到它不是密封的,所以我可以改变它的行为,但我不知道怎么做。
编辑
我的场景是在特定的时间使扩展成为只读的。
发布于 2019-03-14 18:51:33
试试这个片段:
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类,它提供了一种基于函数解析动态值的方法,还可以处理循环引用异常。
https://stackoverflow.com/questions/55146402
复制相似问题