WEB开发网
开发学院软件开发C语言 C# 4.0、动态关键字与 COM 阅读

C# 4.0、动态关键字与 COM

 2010-09-30 22:44:44 来源:WEB开发网   
核心提示: 为了与 COM 自动化接口交互,您经常需要 Variant 类型,C# 4.0、动态关键字与 COM(6),当您在基于 .NET Framework 的应用程序中与 COM 自动化对象交互时,您需要将 Variants 表示成普通对象,图 5 包含编辑过的版本,该版本能够用 C# 4.0 进行正

为了与 COM 自动化接口交互,您经常需要 Variant 类型。当您在基于 .NET Framework 的应用程序中与 COM 自动化对象交互时,您需要将 Variants 表示成普通对象。其直接后果是您不能使用字符串来指示 Word 文档所用的模板文件的名称,因为必须通过引用来传递 Variant 参数。您不得不求助于 Object,如下所示:

Object template = TemplateName; 
var doc = wordApp.Documents.Add(ref template, 
 ref missingValue, ref missingValue, ref missingValue);

要考虑的第二个方面是 Visual Basic 和脚本语言远不如 C# 3.0 严格。例如,这些语言不会强制要求您指定 COM 对象声明上某个方法的所有参数。Documents 集合的 Add 方法需要四个参数,而除非您的语言支持可选参数,否则就不能忽略这些参数。

正如前文所述,C# 4.0 支持可选参数。这意味着,尽管直接用 C# 4.0 来重新编译图 4 中的代码就能正常使用,您可能仍会重写这段代码,删除所有用来传递缺少的值的 ref 参数,如下所示:

Object template = TemplateName; 
var doc = wordApp.Documents.Add(template);

借助 C# 4.0 中新的“省略 ref”支持,图 4 中的代码变得更加简单,而且更重要的是,它变得更容易阅读,且语法上与脚本代码更像。图 5 包含编辑过的版本,该版本能够用 C# 4.0 进行正确编译,并且与图 4 中的代码效果相同。

图 5 在 C# 4.0 中创建新的 Word 文档

public static class WordDocument 
{ 
 public const String TemplateName = @"Sample.dotx"; 
 public const String CurrentDateBookmark = "CurrentDate"; 
 public const String SignatureBookmark = "Signature"; 
 
 public static void Create(string file, DateTime now, String author) 
 { 
  // Run Word and make it visible for demo purposes 
  dynamic wordApp = new Application { Visible = true }; 
       
  // Create a new document 
  var doc = wordApp.Documents.Add(TemplateName); 
  templatedDocument.Activate(); 
 
  // Fill the bookmarks in the document 
  doc.Bookmarks[CurrentDateBookmark].Range.Select(); 
  wordApp.Selection.TypeText(current.ToString()); 
  doc.Bookmarks[SignatureBookmark].Range.Select(); 
  wordApp.Selection.TypeText(author); 
 
  // Save the document 
  doc.SaveAs(fileName); 
 
  // Clean up 
  templatedDocument.Close(); 
  wordApp.Quit(); 
 } 
}

上一页  1 2 3 4 5 6 7  下一页

Tags:动态 关键字 COM

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接