如何創建實例並調用已擴展的COM組件?如何從C#使用版本化的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()一起使用。例如使用GetMassListRangeFromScanNum()用於XRawFile的實例給出了這樣的編譯錯誤:
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?)
的tryout C# source code也是可用的。
平臺:Windows XP 64位SP2。 Visual Studio 2008. XRawFile2.dll的互操作文件是由Visual Studio 2008以正常方式創建的。
這實際上工作。謝謝!返回的數據點也如預期。 – 2009-10-15 13:04:11