首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#动态COM对象找不到方法

C#动态COM对象找不到方法
EN

Stack Overflow用户
提问于 2020-07-30 23:44:11
回答 2查看 465关注 0票数 1

我试图通过C#访问COM对象(CST Studio Suite)。我以前通过下面的MATLAB脚本成功地访问和控制了这个对象:

代码语言:javascript
复制
CST = actxserver('CSTStudio.Application'); % Opens CST
CST.FileNew();                             % Creates a new file
MWS = CST.Active3D;                        % Set focus to the new file
MWS.invoke("AddToHistory","Test","");      % Append to history list

这是我试图用来控制COM对象的C#代码

代码语言:javascript
复制
cst_design_environmentLib.IApplication CST = new cst_design_environmentLib.Application(); // Opens CST
CST.FileNew(); // Creates a new file
dynamic MWS = CST.Active3D(); // Set focus to the new file
MWS.AddToHistory("Test", ""); // Doesn't work, produces an error

在我尝试运行AddToHistory方法之前,这一切都会发生,该方法会失败,并会产生以下错误:

代码语言:javascript
复制
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.__ComObject' does not contain a definition for 'AddToHistory'

我知道AddToHistory方法的存在是因为: 1)我通过MATLAB访问了它,2)它在文档中。那么,为什么它不通过C#运行呢?由于MWS对象是动态类型的,所以在编译时找不到该方法,但它仍然应该在运行时找到,对吗?我已经调试和检查了对象的类型,CSTMWS都是System.__ComObject。当我检查这些对象的动态视图时,它说“无法发现关于该对象的进一步信息”,因此它似乎没有找到任何方法。

而且,CST的类型是类型库cst_design_environmentLib的一部分,因此像FileNew()这样的方法是由intellisense预测的,但我不认为MWS的类型是类型库的一部分。

如果能对此提供任何帮助,我们将不胜感激。

EN

Stack Overflow用户

发布于 2020-07-31 01:48:29

通过使用InvokeMember,我设法使它正常工作,如下所示:

代码语言:javascript
复制
// Create an instance of CST
Type t = Type.GetTypeFromProgID("CSTStudio.Application");
object CST = Activator.CreateInstance(t);

// Create a new file
t.InvokeMember("FileNew", BindingFlags.InvokeMethod, null, CST, null);

// Set focus to the new file
object MWS = t.InvokeMember("Active3D", BindingFlags.InvokeMethod, null, CST, null);

// Add something to the model history
t.InvokeMember("AddToHistory", BindingFlags.InvokeMethod, null, MWS, new string[] {"Test", ""});

这是可行的,但如果有人能解释为什么我的原始代码不起作用,那就太好了。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63182924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档