這是C#版本4.0中的新動態,稱爲dynamic。告訴我我可以在代碼中使用它的方式,以及這個未來可以如何幫助我?向我展示在C#4.0中使用新的「動態」關鍵字的方式
相關問題:
- Does the new ‘dynamic’ C# 4.0 keyword deprecate the ‘var’ keyword ?
- What do you think of the new C# 4.0 ‘dynamic’ keyword?
這是C#版本4.0中的新動態,稱爲dynamic。告訴我我可以在代碼中使用它的方式,以及這個未來可以如何幫助我?向我展示在C#4.0中使用新的「動態」關鍵字的方式
相關問題:
其中一個用途是互操作的靜態和動態語言之間。
說你要調用一個JavaScript函數弗朗的Silverlight:
HtmlPage.Window.Invoke("HelloWorldFunction");
如果窗口是動態的(和正確實施),你將能夠使用它像這樣:
HtmlPage.Window.HelloWorldFunction();
安德斯Hejlsberg在PDC會議上進行了一場名爲「C#的未來」的非常棒的會議。有使用動態關鍵字的一個很好的演示:
一旦你一個動態的對象,編譯器至少打擾任何方法調用,你可能使動態對象。這些調用僅在運行時解決。在這種情況下,Read()方法在運行期間動態分派。
更美的是,C#現在可以靈活地指定應該如何調度動態調用。你可以實現IDynamicObject,自己寫這些綁定器。例如,看看我如何創建一個動態閱讀器類,它允許你在一個實例上調用你自己的方法。現在
public class DynamicReader : IDynamicObject
{
public MetaObject GetMetaObject
(System.Linq.Expressions.Expression parameter)
{
return new DynamicReaderDispatch (parameter);
}
}
public class DynamicReaderDispatch : MetaObject
{
public DynamicReaderDispatch (Expression parameter)
: base(parameter, Restrictions.Empty){ }
public override MetaObject Call(CallAction action, MetaObject[] args)
{
//You might implement logic for dynamic method calls. Action.name
// will give you the method name
Console.WriteLine("Logic to dispatch Method '{0}'", action.Name);
return this;
}
}
,動態關鍵字可用於創建動態對象,很像
dynamic reader=new DynamicReader();
dynamic data=reader.Read();
我們使用C# 「動態」 的關鍵字與TDD。
此代碼不能編譯,因爲該方法「加法」未實現
[TestMethod()]
public void CalculatorThingAdd_2PositiveNumbers_ResultAdded()
{
CalculatorThing myCalculator = new CalculatorThing();
int result = 0;
int expcected = 3;
// --> CalculatorThing does not contain a definition for 'Addition'
result = myCalculator.Addition(1, 2);
Assert.AreEqual(result, expcected);
}
隨着「動態」關鍵字代碼編譯和測試失敗! - > TDD
聰明 - 我要去嘗試自己。 – grefly 2011-07-15 14:17:35