据我所知,Kephas中的Expando
类允许动态添加新成员。与.NET中的ExpandoObject
不同,我注意到它不是密封的,因此我可以更改其行为,但是我真的不知道如何。
[编辑]
我的情况是在特定时间将expando设为只读。
答案 0 :(得分:1)
尝试以下代码段:
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
类,该类提供了一种基于函数解析动态值的方法,还可以处理循环引用异常。