好的,我在结构中有以下代码(有充分的理由,所以不要争论)来支持动态属性,但实际属性和方法存在于外部动态对象中(由结构值指向):
public DynamicMetaObject GetMetaObject(Expression parameter)
{
IDynamicMetaObjectProvider dynObj = ManagedObject ?? Engine.CreateObject<V8NativeObject>(this);
return new DynamicMetaObject(Expression.Parameter(((ParameterExpression)parameter).Type, ((ParameterExpression)parameter).Name),
BindingRestrictions.Empty, dynObj);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,并给出以下错误:“IDynamicMetaObjectProvider V8.Net.InternalHandle 创建了无效的 DynamicMetaObject 实例。”
如果可能的话,我试图避免必须扩展“DynamicMetaObject”来构建与“dynObj”的桥梁,因为“dynObj”已经是动态的,并且已经有自己的“GetMetaObject()”方法。我知道“参数”表达式代表当前目标,但是有没有办法将其传递到外部对象(“dynObj”)的“GetMetaObject()”方法中,而不创建另一个对象作为桥梁?
仅供参考:还有另一个类似的问题,有同样的错误,但我试图尽可能地限制创建的对象数量(即试图防止用桥接对象污染 GC)。
归档时间: |
|
查看次数: |
595 次 |
最近记录: |