我有这些简单的代码
static void Main(string[] args)
{
object addInName = "MyAddin";
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Core.COMAddIn addin = app.COMAddIns.Item(ref addInName);
app.Visible = false;
var myObject = addin.Object;
var vvv = myObject.someMethod();
}当运行它时,它会在someMethod引发NullReferenceException时失败。但是myObject不是空的。
如果我在这一行上放置了一个断点,将鼠标光标移到myObject,单击扩展的动态视图,然后单击某些接口视图。那就成功了!
虽然COM对象不是null,但似乎还没有准备好/初始化。但是,如果我从调试器断点检查它的内部状态,就会以某种方式强制它初始化。
有什么问题吗?
Addin扩展了StandardOleMarshalObject alrady。
发布于 2016-02-05 12:32:50
尝试使用后期绑定技术(.Net中的反射)。有关详细信息,请参阅Type.InvokeMember。
这两个应用程序是否在相同的安全上下文中运行?或者您是否以管理权限(以管理员身份运行)运行其中的任何一个?
https://stackoverflow.com/questions/35215906
复制相似问题