要在 C# 4.0 中实现“方法缺失”语义等,您必须实现 IDynamicObject:
public interface IDynamicObject
{
MetaObject GetMetaObject(Expression parameter);
}
据我所知,IDynamicObject 实际上是 DLR 的一部分,因此它并不新鲜。但我找不到太多关于它的文档。
有一些非常简单的示例实现(f.x.here and here),但是有人可以指出我更完整的实现或一些真实的文档吗?
特别是,你到底应该如何处理“参数”参数?
简而言之,元对象负责实际生成将在调用站点运行的代码。为此使用的机制是 LINQ 表达式树,该机制已在 DLR 中得到增强。因此,它不是从对象开始,而是从代表该对象的表达式开始,最终需要返回一个描述要采取的操作的表达式树。
使用此功能时,请记住 CTP 中的 System.Core 版本取自 8 月底的快照。它与 IronPython 的任何特定测试版并没有非常明确地对应。自那时起,DLR 发生了许多变化。
此外,为了与 CLR v2 System.Core 兼容,从 beta 4 或 beta 5 开始的 IronPython 版本现在将 System 命名空间中的所有内容重命名为 Microsoft 命名空间中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)