【发布时间】:2012-06-29 17:59:13
【问题描述】:
我正在使用 C# 4.0 实例化 Excel.Application 并打开 Excel.Workbook。剥离下来,我的代码如下所示:
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
xlApp = new Excel.Application();
xlWorkBook = xlApp.Workbooks.Open("someFile");
Open() 方法有很多我不需要提供的可选值。这很方便,只是我不知道那些可选参数的默认值是什么。因此,我无法决定是否必须提供值。
在这种情况下,我可以在 MSDN 文档中找到 一些 参数的所需信息。是否有一种通用方法来确定 COM 互操作类型中可选参数的默认值?
更新:
在MSO.dll 上使用oleview,我检查了Workbook 接口的相应IDL。对于SaveAs() 方法,它看起来像这样:
HRESULT SaveAs(
[in, optional] VARIANT Filename,
[in, optional] VARIANT FileFormat,
[in, optional] VARIANT Password,
blahblah...
[in, optional, defaultvalue(1)] XlSaveAsAccessMode AccessMode,
blahblah...
[in, optional] VARIANT Local,
[in, lcid] long lcid);
在 Visual Studio 中,intellisense 为大多数参数显示 [object Filename = Type.Missing],我认为这是有道理的,因为 IDL 没有提供任何有关类型 (VARIANT) 或任何默认值的信息。但是,对于参数AccessMode,IDL 提供了所需的信息并由智能感知显示。
所以我想现在的问题变成了:为什么 IDL 没有更具体地说明所有参数的类型(和默认值),就像 AccessMode 一样?
【问题讨论】:
-
智能感知不显示预期值吗?
-
@MBen:请参阅我对更新下的问题的补充以获得答案。