環境:C#,.NET 3.5,Windows 7的64時,Excel 2007,Visual Studio 2010中Excel加載類庫之間共享內存
我有3個項目一VS2010:
謨«業務»:一個類庫與全局靜態變量
List<BusinessClass>
項目«外接»:擴展共享加載和外接類:
[GuidAttribute("A9E83593-395F-4112-855D-A68C5088151F"), ProgId("eFrontCubeAddIn.CubeAddIn")]
public class CubeAddIn : Object, Extensibility.IDTExtensibility2, ICustomTaskPaneConsumer {…}
Excel將調用OnConnection,我將使用Excel對象(ExcelApp =(Excel.Application)應用程序;)進行交互。 「加載項」中的所有交互都通過COM(InvokeMember)完成。 的List<BusinessClass>
,並填入從「外接」
項目«公式»:類庫。一個UDF Excel特定公式。方法是使用下面的模型建造和使用[ComRegisterFunctionAttribute] RegisterFunction(類型類型)註冊...
[Guid("5268ABE2-9B09-439d-BE97-2EA60E103EF6")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public class MyFunctions {
public double MyUdfFunction(double number1, double number2) {
{
return number1 * number2;
}
我的問題是非常簡單的解釋:我在項目中的功能區和一個自定義面板«添加在»灌裝List<BusinessClass>.
當Excel用戶在單元格中輸入'= MyUdfFunction(6; 7)'時,將調用我在«Formulas»中的方法。 由於它來自不同的流程(來自Excel),UDF無法訪問「商業」實例,而List<BusinessClass>
無法訪問。
UDF有時可能被調用超過500,000次 由於速度的原因,我不想在循環中插入一個調用我的UDF的VBA腳本。 由於速度的原因,我不想使用共享內存,命名管道,WCF或其他工件。 不想使用UDF服務(不能使用Sharepoint服務器)。
我知道,當你在不同的過程中,你不能使用來自其他過程的數據。
任何讓「公式」直接訪問「業務」實例的想法?就像事先在同一個進程中的所有3個項目...
感謝 讓瑪麗
感謝Charles,我已聯繫Add-In Express以查看他們的模型是否可以解決我的問題。 – 2012-02-03 06:30:11