根據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