C# 4动态编程新特性与DLR剖析
2010-09-30 22:46:36 来源:WEB开发网 Object wordapp = new Word.Application(); //创建Word对象
Object fileName = “MyDoc.docx” ;//指定Word文档
Object argu = System.Reflection.Missing.Value;
Word.Document doc = wordapp.Documents.Open(ref fileName, ref argu,
ref argu, ref argu, ref argu, ref argu, ref argu, ref argu,
ref argu, ref argu, ref argu, ref argu, ref argu, ref argu,
ref argu, ref argu);
上述对Open()方法的调用语句只能用“恐怖”一词来形容,其原因是Word组件中的Open()方法定义了太多的参数。
C#4使用dynamic关键字,配合从Visual Basic中学来的“命名参数与可选参数”这两个新语法特性,可以写出更简洁的代码:
dynamic wordapp = new Word.Application();
dynamic doc = wordapp.Documents.Open(FileName: “MyDoc.docx”);
上述代码中省去了用不着的参数,并且可以去掉参数前的ref关键字。
当上述代码运行时,DLR会使用反射技术将dynamic表达式“绑定(bind)”到COM互操作程序集中所包容的Word.Application代理对象。
(3)C# 4动态编程技术内幕
C#4中所定义的dynamic变量可以引用以下类型的对象:
l 传统的“静态”的CLR对象。
l COM包装器对象。前面已经介绍了这方面的内容。
l 实现了IDynamicMetaObjectProvider接口的“动态对象”,ExpandoObject就是这种类型对象的实例。
更多精彩
赞助商链接