根据Anders的说法,在C#4.0中,我们将获得动态类型或“静态类型是动态的”对象。这将允许任何方法调用解析在运行时发生,而不是编译时。但是,是否有能力将动态对象绑定到某种合约上(因此也可以获得完整的智能感知),而不是允许对它进行任何调用,即使您知道该合约不太可能有效。C#4.0动态对象是否有一些用于鸭子打字的设施?
I.e.而不是仅仅
dynamic foo = GetSomeDynamicObject();
要投或改造它把它限制在一个已知的合同只是
IFoo foo2 = foo as IFoo;
无法找到任何东西的能力,如
3210甚至就像现有C#4.0的材料一样,但它似乎是动态范例的逻辑延伸。有更多信息的人?
由于它仍然是一个动态对象,即调用仍然会在运行时发生,但您现在可以将它作为IFoo传递,因为您告诉编译器您的动态对象的行为类似于IFoo – 2008-11-03 21:57:17
是的,但是如果你想让IFoo交出来,'有人'需要用它背后的动态对象来制作一个直通IFoo实现。这就是Jon Skeet上面提到的。 – mackenir 2008-11-03 22:59:10