了解 GetMetaObject() 中的 Expression 参数

Jam*_*ins 5 c# dynamic

好的,我在结构中有以下代码(有充分的理由,所以不要争论)来支持动态属性,但实际属性和方法存在于外部动态对象中(由结构值指向):

    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)。