0

C ++ COMライブラリからC#でCOMオブジェクトを返します。オブジェクトには、タイプC#- "object"を返すプロパティがあります。ドキュメントには、そのタイプが「バリアント」 (C ++)であり、3つの「double」値の1次元配列が含まれていることが示されています。キャストした後、

Object obj = m.TextPosition;  // "m" - is com object
var d3 = (System.Double[])obj;// cast

「タイプ'System.Double[*]'のオブジェクトをタイプ'System.Double[]'にキャストできません。というエラーが表示されます。

この問題を解決する方法は?

4

1 に答える 1

1

.NET double[] と互換性を持たせるには、下限が 0 の SAFEARRAY を作成する必要があります。

それができない場合は、C# コードで Array にキャストし、その GetValue() メソッドを使用して要素にアクセスする必要があります。どこから始めればよいかを知るには、GetLowerBound() を使用します。

于 2012-06-17T20:33:05.207 に答える