理解GetMetaObject()中的Expression参数

时间:2013-08-05 23:45:01

标签: c# dynamic

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

    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'是ALREADY动态的,而ALREADY有自己的'GetMetaObject()'方法。我知道“参数”表达式表示当前目标,但有没有办法将它传递到外部对象('dynObj')的'GetMetaObject()'方法而不创建另一个对象作为桥接? / p>

仅供参考:还有另一个类似的问题,同样的错误,但我试图尽可能地限制创建的对象数量(即试图防止不得不用桥对象污染GC)。

0 个答案:

没有答案