你如何实现C#4的IDynamicObject接口?

Ras*_*ber 6 dynamic-language-runtime dynamic idynamicobject c#-4.0

要在C#4.0中实现"方法缺失" - 语义等,您必须实现IDynamicObject:

public interface IDynamicObject
{
  MetaObject GetMetaObject(Expression parameter);
}
Run Code Online (Sandbox Code Playgroud)

据我所知,IDynamicObject实际上是DLR的一部分,所以它不是新的.但我还没有找到很多关于它的文件.

有一些非常简单的示例实现(这里这里的 fx ),但是有人能指出更完整的实现或一些真正的文档吗?

特别是,你究竟应该如何处理"参数" - 参数?

Cur*_*her 4

简而言之,元对象负责实际生成将在调用站点运行的代码。为此使用的机制是 LINQ 表达式树,该机制已在 DLR 中得到增强。因此,它不是从对象开始,而是从代表该对象的表达式开始,最终需要返回一个描述要采取的操作的表达式树。

在使用此功能时,请记住 CTP 中的 System.Core 版本取自 8 月底的快照。它与 IronPython 的任何特定测试版并没有非常明确地对应。自那时起,DLR 发生了许多变化。

此外,为了与 CLR v2 System.Core 兼容,从 beta 4 或 beta 5 开始的 IronPython 版本现在将 System 命名空间中的所有内容重命名为 Microsoft 命名空间中。