所以我很高兴在我的API上使用3层体系结构,但是在将其实现到VSTO AddIn时遇到了问题(但也许我不应该?)。无论如何,这是我无法使用的解决方案;
我的VSTO有一个按钮来接收所有对象。
private void Bt1_Click(object sender,microsoft.Office.Tools.Ribbon.RibbonControlEventArgs e)
{
ObjectManager objManager = new ObjectManager(new ExcelObjectDal());
var allObjects = objManager.GetObjects();
//Add all objects to WinForm
}
和位于我的业务层中的我的ObjectManager:
public class ObjectManager : IObjectService
{
public IObjectDal ObjectDal { get; set; }
public ObjectManager(IObjectDal DAL)
{
ObjectDal = DAL;
}
public List<Object> GetObjects()
{
Worksheet sheet = ObjectDal.GetObjects();
//Business logic to extract each object from the sheet
return new List<object>();
}
}
这是我的DAL:
public class ExcelObjectDal : IObjectDal
{
private Workbook book;
public ExcelObjectDal()
{
this.book = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.activeWorkbook);
}
public Worksheet GetObjects()
{
Worksheet sheet = (Worksheet)Globals.Factory.GetVstoObject(book.Worksheets[name]);
return sheet;
}
}
我的问题是,除了VSTO之外,其他任何地方都无法使用我的工作簿。因此,我应该只在一个大项目中创建它,而忘记分层吗?如何从VSTO之外的任何地方访问我的数据(Excel工作表)?