在Excel VSTO文档级自定义中,如何将“Globals.Sheetn”传递给参数以指定Excel.Worksheet接口?

当我在工作表的部分类文件(例如Sheet8)中编写代码时,如何将“this”类作为期望具有Microsoft.Office.Interop.Excel.Worksheet接口的对象的parameter passing?

下面是一个来自Sheet8.cs文件的例子:

public partial class Sheet8 { private void Sheet8_startup(object sender, System.EventArgs e) { var object = new MyCustomClass(this); } } 

而我想写的消费代码:

 class MyCustomClass { public MyCustomClass(Microsoft.Office.Interop.Excel.Worksheet sheet) { // Do something with the sheet } } 

问题似乎是“this”总是引用Sheet n对象,并且不能转换为使用自定义代码创build松散耦合接口所必需的接口types。 有什么build议么?

经过几个星期的search,我find了答案。 这实际上是令人尴尬的简单。

每个Globals.SheetN对象都有一个InnerObject()方法,该方法返回具有正确接口的对象。 如何使用它的一个例子:

 public partial class Sheet8 { Sheet8_startup(object sender, System.EventArgs e) { var sheet = new MyCustomClass(InnerObject()); } } 

从那里,你可以build立松散耦合的自定义对象到你的心脏的内容!

您也可以使用this关键字而不是InnerObject()

 public partial class Sheet8 { Sheet8_startup(object sender, System.EventArgs e) { var sheet = new MyCustomClass(this); } } 

然后,为您的消费类的构造函数使用Microsoft.Office.Tools.Excel.WorksheetBasetypes(而不是Worksheettypes)。

 class MyCustomClass { public MyCustomClass(Microsoft.Office.Interop.Excel.WorksheetBase sheet) { // Do something with the sheet } }