2013-08-13 2 views
1

I C#에서 Com 구성 요소를 만들고 Javascript로 액세스를 시도합니다.C# COM 구성 요소를 호출하는 동안 javascript에서 유형을 잘못 입력했습니다.

내 C# 방법은 자바 스크립트에서

Class myComComponent 
{ 
    private int[] nAllData;  
    public int[] GetArray(int index) 
      { 
       //Some Logic here that will return integer type of array{1,12,15,48,1452,45} 
       return nAllData; 
      } 
} 

전화는 그러나 그것은 나에게 유형 불일치 오류를 제공합니다.

자바 스크립트 코드

function MyComComponent_onload() { 
      try { 
       var nAllData = new Array(); 
       for (var i = 0; i<= 5; i++) 
        { 
         nAllData.push(myComComponent.GetArray(i)); 
        } 
       } 
       catch (err) 
       { 
        alert(err.message); 
       } 
      } 
    <html> 
    <head> 
<object id="myComComponent" name="myComComponent" classid="clsid:4794D615-BE51-4A1E-B1BA-453F6E9337C4"> 
    </head> 
    <body onload="MyComComponent_onload();"> 
    //// Html Code goes here 
    </body> 
    <html> 
+0

C# 함수는 정수 배열을 반환하므로 자바 스크립트에 2D 배열이 있어야이 배열을 저장할 수 있습니다. 맞습니까? –

+0

@Giwrgos Tsopanoglou 어떻게 할 수 있습니까? 나는 그것을 어떻게 변환할지 모른다. u는 간단히 말해주십시오. – IMMORTAL

+0

나는 C#과 자바 스크립트를 결합하지 않았으며 나는 전문가가 아닙니다. 어쩌면 당신은 for 루프에 "nAllData [i] = new Array()"를 추가 할 수 있습니다. –

답변

1

자바 스크립트는 COM의 자동화 호환 하위 집합을 사용할 수 있습니다. 정수의 배열은 그 부분 집합의 일부가 아닙니다.

JavaScript와 호환되도록 SAFEARRAY를 반환하거나 IEnumVariant 인터페이스 (예 : foreach 작동)를 사용하여 개체를 반환하고 색인 된 기본 속성을 사용하여 IDispatch를 반환해야합니다 (대괄호로 색인 생성).

+0

당신의 methedology가 정확하다고 생각합니다. 당신이 더 나은 이해를위한 모범을 줄 수 있습니까? – IMMORTAL

관련 문제