Visual Basic有GetObject
函数,可以像这样使用
Set app = GetObject(, "Word.Application")
1C Enterprise还有一个new COMObject()
运算符,它也接受一个普通的字符串并返回一个相应的COM对象。
此功能的C#等价物是什么?
答案 0 :(得分:0)
我在GetObject
命名空间中找到了相同的Microsoft.VisualBasic
函数。 Haven对此感到满意,我已经反编译了该函数,并发现了它如何创建COM对象:Marshal.GetActiveObject
和Activator.CreateInstance
。
要反映COM对象,可以使用Oleauto.h中的IDispatch::GetTypeInfo
方法。 CodeProject上的C#还有一个整洁的包装器。
某些对象,如1C Automation(" V83.Application")似乎不能立即与C#dynamic
一起使用。为了解决这个问题,我创建了一个类并继承自System.Dynamic.DynamicObject
。这使我可以覆盖InvokeMethod
并在其上调用IDispatch::Invoke
。
答案 1 :(得分:0)
您可以使用Activator.CreateInstance(string Progid)
方法通过传递COM类的Prog id来创建COM对象