当我在工作表(例如Sheet8)的部分类文件中编写代码时,如何传递"这个" class作为期望具有Microsoft.Office.Interop.Excel.Worksheet接口的对象的参数?
这是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
}
}
问题似乎是"这个"始终引用Sheet n 对象,并且不能转换为使用自定义代码创建松散耦合接口所需的接口类型。有什么建议吗?
答案 0 :(得分:1)
经过数周的搜索,我发现了它。它实际上很简单。
每个Globals.SheetN
对象都有一个InnerObject()方法,该方法返回具有正确接口的对象。如何使用它的一个例子:
public partial class Sheet8
{
Sheet8_startup(object sender, System.EventArgs e)
{
var sheet = new MyCustomClass(InnerObject());
}
}
从那里,您可以根据自己心中的内容构建松散耦合的自定义对象!
答案 1 :(得分:0)
您还可以使用this
关键字代替InnerObject()
。
public partial class Sheet8
{
Sheet8_startup(object sender, System.EventArgs e)
{
var sheet = new MyCustomClass(this);
}
}
然后,对于您的消费类的构造函数,请使用Microsoft.Office.Tools.Excel.WorksheetBase
类型(而不是Worksheet
类型)。
class MyCustomClass
{
public MyCustomClass(Microsoft.Office.Interop.Excel.WorksheetBase sheet)
{
// Do something with the sheet
}
}