C#4.0动态对象是否具有一些鸭子打字功能?
-
06-07-2019 - |
题
根据Anders的说法,在C#4.0中,我们将获得动态类型或“静态类型是动态的”对象。这将允许任何方法调用解析在运行时而不是编译时发生。但是,是否有设施将动态对象绑定到某种合同上(从而也可以获得完整的智能感知),而不是允许对它进行任何调用,即使你知道它不可能有效。
即。而不只是
dynamic foo = GetSomeDynamicObject();
能够转换或转换它以将其约束为已知合约,例如
IFoo foo2 = foo.To<IFoo>;
甚至只是
IFoo foo2 = foo as IFoo;
在C#4.0的现有材料中找不到类似的东西,但它似乎是动态范例的逻辑扩展。有更多信息的人?
解决方案
我不知道有什么东西真的像鸭子打字,我很害怕。我关于这个想法的博客,但我不指望任何支持。使用Reflection.Emit创建一个将生成任何给定接口的实现的类,在构造函数中获取动态对象并将每个调用代理通过它可能不会太难。不理想,但它可能是一个权宜之计。
不隶属于 StackOverflow