更改阵列的COM互操作表示在框架4.0?

问题描述 投票:2回答:1

我升级从2.0框架4.0框架C#web项目,我似乎有它周围的引用COM组件的一些问题。它好像什么改变了这一切,我不知道周围的互操作性展示的产生。

我收到了一些类似以下的错误,现在无需改变任何代码:

cannot convert from 'out string[]' to 'out System.Array'

对于以上这第一误差是原型:

[id(3), helpstring("method GetAllWaves")] HRESULT GetAllWaves([out] SAFEARRAY(BSTR)* ppWaves,  [out,retval] ExactaStatus *Status);

下面是使用它的C#代码:

string[] arrWaves;

m_BPStatus = m_objTXPBatchPick.GetAllWaves(out arrWaves);

它好像基于我正在使用前相同的COM库的Visual Studio是现在产生不同的方法原型,它的使用,而不是特定类型的System.Array。这是新的东西在问候了4.0项目还是有在Visual Studio中一些设置我失踪的地方?

c# com interop
1个回答
1
投票

我从来没有找到除了爱情之外解决这个问题。我不得不作出以下代码更改:

Array arrWaves;

m_BPStatus = m_objTXPBatchPick.GetAllWaves(out arrWaves);
Session["arrWaves"] = arrWaves.Cast<string>().ToArray();

上述关键是要改变将其存储为.Cast<string>().ToArray()

© www.soinside.com 2019 - 2024. All rights reserved.