2012-06-17 2 views
0

C#에서 COM 개체를 C++ COM 라이브러리에서 반환합니다. 개체에는 C# - "개체"을 반환하는 속성이 있습니다. 설명서에 유형이 "변형" (C++)이며 "double" 값의 3 차원 배열이 포함되어 있습니다. 캐스트를 한 후, C#에서 com 객체의 배열 반환 (double [])?

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

나는 오류를 얻을 : 는 "유형의 개체를 캐스팅 할 수 없습니다 'System.Double [*]' 'System.Double []'를 입력 할

방법. 이 문제를 해결?

답변

1

을 당신은 .NET 더블 []와 호환 0의 하한으로 SAFEARRAY를 작성해야합니다.

를하는 당신이 당신의 C#으로 배열로 캐스팅 할 필요가 다음 옵션이 아니라면 코드를 만들고 GetValue() 메서드를 사용하여 요소에 액세스합니다. GetLowerBound()를 사용하여 시작할 위치를 알 수 있습니다.

+0

http://www.west-wind.com/weblog/posts/2008/Aug/26/Accessing-a-SafeArray-Result-from-a-COM-Call-in-C –

+0

감사합니다! 귀하의 대답은 제가 해결책을 찾도록 도왔습니다. 위에 자세히 읽어보십시오. –

+0

당신의 대답은 나에게 필요한 솔루션을 얻기위한 솔루션 공간을 제공해주었습니다. 그 말은 당신이 대답하는 것이 정확했습니다. 감사! –