2009-03-04 39 views
2

我试图找到调用COM对象方法的最干净和最快的方法。最快的方法来调用COM对象的方法,而不使用RCW

我使用的是RCW的对象,但每一个第三方COM对象的新版本出来的GUID的变化,然后呈现RCW无用的时间,所以我不得不改变,并开始使用

Type mytype = Type.GetTypeFromProgID("MyCOMApp.Application"); 

,这样每次COM对象的新版本出来时,我都不必重新编译和重新部署我的应用程序。

目前我正在使用像mytype.InvokeMemeber这样的反思,但我觉得它比如此慢,而不是只调用RCW。

其他人如何解决更改第三方COM对象版本的问题,但仍然保持RCW的速度?

回答

4

如果您想使反射调用更容易,可以使用VB.NET,并对类型为Object的变量进行迟到调用。 VB.NET将帮助调用反射。您还可以设置对Microsoft.VisualBasic.dll的引用,并对CallByName进行调用以帮助进行反射调用。

但是,它是IID(接口GUID)还是类GUID发生了变化?如果它是更改的类GUID,则可以定义一次接口,然后通过调用GetTypeFromProgID来获取Type。一旦你有了,你可以将类型传递给Activator类的CreateInstance方法,然后转换为接口,这不会改变。

但是,如果IID确实发生了变化,则每次都必须使用反射。

+0

使用VB后期绑定较慢,然后在C#中使用反射? – 2009-03-04 02:41:59