2017-03-03 1 views
0

나는 매개 변수JavaScript에서 Windows로 개체 목록을 전달하는 방법 런타임 구성 요소 C#?

C#

public sealed class MyClass 
{ 
    public IEnumarable<DtoClass> MyFunction(IEnumarable<DtoClass> properties) { 

    return properties; 
} 
} 

자바 스크립트

var Test=[]; 
for (var i = 0; i < res1.length; i++) 
{ 
    Test.push({ category_id: res1[i].category_id }); 
} 
var Conncetion = WindowsRTSqlite.MyClass(); 
var result = Conncetion.MyFunction(Test); 

내가 난 같은 입력 매개 변수를 반환하고있어 같은 IEnumarable을 받아 C#에서 WinRT 구성 요소를 만들었습니다 MyFunction 메서드로 전송하지만 결과를 반환하지는 않습니다. 왜 이것이 작동하지 않는 것인지 모르겠습니다. 어떤 아이디어?

미리 감사드립니다.

답변

0

JavaScript에서 Windows로 개체 목록을 전달하는 방법 런타임 구성 요소 C#?

실제로 정확한 방법은 컬렉션을 json 문자열로 serialize하고이 문자열을 Windows 런타임 구성 요소에 전달하는 것입니다. 그리고 데이터 처리를 위해 런타임 구성 요소 측면에서 json 문자열을 deserialize하십시오. 그런 다음 직렬화 된 json 문자열을 JavaScript uwp 앱으로 되돌립니다. JavaScript에서 직렬화하는 방법은 this class을 참조하십시오. C#으로 직렬화하는 방법은 this namespcase을 참조하십시오. 그래서 자바 스크립트 측 코드는 다음과 수 있으므로 :

var Test = []; 
for (var i = 1; i < 6; i++) { 
    Test.push({ category_id: i }); 
} 
var Conncetion = RuntimeComponent1.MyClass(); 
var Testserialation = JSON.stringify(Test); 
var resultnew = Conncetion.newFunction(Testserialation); 
var Testreturn = JSON.parse(resultnew); 

및 Windows 런타임 구성 요소의

이 작동하지 않는 이유

public sealed class MyClass 
{ 
    public string NewFunction(string jsonstring) 
    { 
     JsonArray entity= JsonArray.Parse(jsonstring); 
     return entity.ToString();   
    } 
} 

나는 확실하지 않다.

코드 조각에 따르면, 객체 배열을 만들고이를 런타임 구성 요소에 IEnumarable<DtoClass>으로 전달하려고했습니다. 배열을 전달했습니다. 제 생각에는 배열로 전달할 수 있어야합니다. 그리고 나는 객체가 자동으로 DtoClass으로 파싱 될 수 있다고 생각하지 않는다. 인식 할 수있는 문자열 또는 int 배열을 사용하는 경우. 예를 들어, int 배열 : 구성 요소의

var newTest = [1, 2, 3, 4]; 
var result2 = Conncetion.changeArray(newTest); 

코드 : this article을 참조하시기 바랍니다 Windows 런타임 구성 요소에 배열을 전달하는 방법에 대한

public int[] ChangeArray([ReadOnlyArray()] int[] input) 
{ 
    int[] output =(int[])input.Clone(); 
    // Manipulate the copy. 
    // ... 
    return output; 
} 

자세한 내용.

관련 문제