在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.WorksheetBase
types(而不是Worksheet
types)。
class MyCustomClass { public MyCustomClass(Microsoft.Office.Interop.Excel.WorksheetBase sheet) { // Do something with the sheet } }