2012-07-09 3 views
1

현재 객체 리터럴의 속성 값을 가져 오려고합니다. 내 C# 프로그램에서 브라우저 컨트롤을 가지고, 나는 쉽게 다음으로 글로벌 변수의 값을 얻을 수 있습니다 : 다른 한편으로는 JS 내 변수가 실제로 속성입니다, 경우JS에서 C#에서 객체 리터럴의 속성 가져 오기

... 
mshtml.IHTMLDocument domDoc = ((mshtml.IHTMLDocument2)_browser.Document.DomDocument) 
object script = domDoc.Script; 
object nameOfVariable = script.GetType().InvokeMember("nameOfVariable", BindingFlags.GetField | BindingFlags.GetProperty, null, script, null); 
... 

객체 리터럴의 :

var NameOfLiteral = { 
    var nameOfVariable: false // EDIT: no var as jbabey pointed out 
}; 

가 나는 문자가 포함 된 COM 개체를 얻기 위해 이전의 코드를 사용할 수 있습니다,하지만 난 속성을 얻기 위해 그것을 검사하는 방법을 전혀 단서가 없다. 내가하고 싶은 일을하는 방법을 보여주는 좋은 예가 있습니까?

+0

'nameOfVariable'가 아니다 변수 (예제 ​​코드가 잘못된 경우). 'NameOfLiteral'의 ** 속성 **입니다. –

+0

질문을 재 형식화하려고 시도하지만, C#에서 객체 리터럴의 속성을 얻는 방법은 무엇입니까? –

답변

2

이 구문은 유효 자바 스크립트, 그것은해야되지 않은 : 다음

var NameOfLiteral = { 
    nameOfVariable: false // no "var" on object properties 
}; 

, 당신은 다음처럼 C 번호에서 해당 속성에 액세스 할 수 있어야합니다 :

object nameOfVariable = script.GetType().InvokeMember("NameOfLiteral.nameOfVariable" ...); 
+0

두 단계로 수행하면 실제로 값을 얻을 수 있습니다. 먼저 리터럴을 가져온 다음 InvokeMember를 두 번 사용하여 속성을 가져옵니다. 그렇지 않으면 알 수없는 이름 예외가 발생합니다. –