C# 如何解决此Microsoft.Office.Excel方法调用中的歧义?

C# 如何解决此Microsoft.Office.Excel方法调用中的歧义?,c#,excel,C#,Excel,我正在c代码中使用office 2007 excel工作表功能。 VS2010发出此警告 警告3方法之间的歧义 'Microsoft.Office.Interop.Excel.\u工作表.Activate()' 和非方法 “Microsoft.Office.Interop.Excel.DocEvents\u Event.Activate”。 使用方法 小组。D:\EXLANEDB01p\dev\libraries\EXCEL\EXCEL.cs 531 95 EXCEL 我如何解决这个问题? 电话

我正在c代码中使用office 2007 excel工作表功能。 VS2010发出此警告

警告3方法之间的歧义 'Microsoft.Office.Interop.Excel.\u工作表.Activate()' 和非方法 “Microsoft.Office.Interop.Excel.DocEvents\u Event.Activate”。 使用方法 小组。D:\EXLANEDB01p\dev\libraries\EXCEL\EXCEL.cs 531 95 EXCEL

我如何解决这个问题? 电话是

xSheet.Activate(); 
其中
xSheet
在调用as中作为ref传递

ref Microsoft.Office.Interop.Excel.Worksheet xSheet

您需要消除
激活
名称的歧义。在工作表界面中,
Activate
是一种方法(如果被视为
\u工作表
对象)或事件(如果被视为
DocEvents\u事件
对象)

将对象强制转换为Microsoft.Office.Interop.Excel.\u工作表,然后调用
Activate()

或者声明一个新的
\u工作表
变量,并在方法中使用它

_Worksheet sheet = xSheet;
sheet.Activate();
否则,您可以将方法声明更改为引用
\u工作表
,而不是
工作表
以及所有相关声明

void MyMethod(ref Microsoft.Office.Interop.Excel._Worksheet xSheet)
{
    // ...
}

// usage:
_Worksheet sheet = new Worksheet();
MyMethod(ref sheet);

@保护者:我们需要消除
激活
名称的歧义。在
工作表
界面中,
激活
是一种方法(如果被视为
\u工作表
对象)或事件(如果被视为
DocEvents\u事件
对象)。编译器不确定如何处理它,所以我们(程序员)需要告诉我们如何处理它。在这种情况下,我们应该将其视为一个工作表,其中名称
Activate
是一个方法,如果我们在开始时将变量声明为
\u工作表
,而不是实现
\u工作表
DocEvents\u事件
接口的互操作类型
工作表
,我们本来可以一起避免这种情况。i、 例如,
_工作表xSheet=新工作表()
void MyMethod(ref Microsoft.Office.Interop.Excel._Worksheet xSheet)
{
    // ...
}

// usage:
_Worksheet sheet = new Worksheet();
MyMethod(ref sheet);