这是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