【发布时间】:2020-05-06 20:39:54
【问题描述】:
如何对已扩展的 COM 组件进行实例化和调用?
多年来,我在一个用 .NET(混合 VB.NET 和 C#)编写的mass spectrometry 相关应用程序中使用第三方 COM 组件(来自 Finnigan/Thermo Scientific 的 XrawFile2.dll)来访问原始光谱数据.效果很好。
但是,此 COM 组件已通过接口继承的方式进行了扩展。以 IDL 表示(使用OLE/COM Object Viewer [OleView.Exe] 提取):
interface IXRawfile3 : IXRawfile2 {
.
.
interface IXRawfile2 : IXRawfile {
.
.
interface IXRawfile : IDispatch {
.
.
coclass XRawfile {
[default] interface IXRawfile;
};
完整提取的IDL for XRawFile2.dll 可用(带有
的HTML 页面)。我想使用新界面中可用的功能(IXRawfile3),
GetMassListRangeFromScanNum()而不是
GetMassListFromScanNum()在原始界面(IXRawfile)中。
创建 XRawFile 实例并调用 GetMassListFromScanNum() 没有问题。
但我无法让它与 GetMassListRangeFromScanNum() 一起使用。例如,对 XRawFile 的实例使用 GetMassListRangeFromScanNum() 会产生以下编译错误:
Error 1 'XRAWFILE2Lib.XRawfile' does not contain a definition for 'GetMassListRangeFromScanNum' and no extension method 'GetMassListRangeFromScanNum' accepting a first argument of type 'XRAWFILE2Lib.XRawfile' could be found (are you missing a using directive or an assembly reference?)平台:Windows XP 64 位 SP2。 Visual Studio 2008。XRawFile2.dll 的互操作文件是由 Visual Studio 2008 以正常方式创建的。
【问题讨论】:
标签: .net com-interop