好的,我在结构中有以下代码(有充分的理由,所以不要争论)来支持动态属性,但是 ACTUAL 属性和方法存在于外部动态对象中(由结构值指向):
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);
}
这不起作用,并给出以下错误:“IDynamicMetaObjectProvider V8.Net.InternalHandle 创建了一个无效的 DynamicMetaObject 实例。”
如果可能的话,我试图避免扩展 'DynamicMetaObject' 以建立与 'dynObj' 的桥梁,因为 'dynObj' 已经是动态的,并且已经有自己的 'GetMetaObject()' 方法。我知道“参数”表达式代表当前目标,但是有没有办法将它传递给外部对象('dynObj')的'GetMetaObject()'方法而不创建另一个对象作为桥梁?
仅供参考:还有另一个类似的问题,错误相同,但我试图尽可能地限制创建的对象数量(即试图防止不得不用桥对象污染 GC)。