2009-09-04 4 views
3

내가 DB, 파일에 저장된 텍스트가있는 경우, 자원은 문제가되지 않습니다 :VB.NET의 XML 리터럴 구문 분석

Dim el As XElement = XElement.Parse({variable containing text above}) 

와 가지고 :

<code><%= Integer.MaxValue %></code> 

이 할 수있는 방법이 있나요 그것은 표현식 Integer.MaxValue를 평가합니까?

답변

2

짧은 대답은 아니오입니다. 컴파일러는이를 파싱하는 방법을 알고 있으며 소스 코드를 C# 코드에서와 같이 보이는 것으로 대체합니다.

테스트 코드 :

Dim source As String = "a,s,d,f" 
Dim ar As String() = source.Split(","c) 
Dim el As XElement = <code> 
         <%= From s In ar Select s + "22" %> 
        </code> 

반영 코드 : 쉽게

Dim VB$CG$t_i4$S0 As Integer 
Dim ar As String() = "a,s,d,f".Split(New Char() { ","c }) 
Dim VB$t_ref$S0 As New XElement(XName.Get("code", "")) 
VB$t_ref$S0.Add(ar.Select(Of String, String)(New Func(Of String, String)(AddressOf Test._Lambda$__1))) 
Dim el As XElement = VB$t_ref$S0 
+0

최종 답변을 게시 해 주셔서 감사합니다. 어떻게 이걸 배웠는지 말해 줄래? –

+0

리플렉터를 사용하여 어셈블리를 디 컴파일하고 컴파일러가 내 코드에서 수행 한 작업을 살펴 ​​보았습니다. http://www.red-gate.com/products/reflector/에서 찾을 수 있습니다. – epitka

0

핵심은 삽입 된 표현이 어떻게 작동하는지 이해하는 것입니다. 나는 이것을 a separate question으로 부탁했습니다.

1

하지 않습니다. CodeDOM을 사용하여 코드를 생성 할 수있는 가장 가까운 방법은 래퍼 모듈과 FunctionReturn으로 생성 한 다음 데이터베이스의 표현식을 Return에 넣고 컴파일하고 컴파일 오류를 확인해야합니다. 그것을 실행하고 결과를 확인하십시오. 대체로 이것은 매우 느릴 것입니다.

+0

그런 시도를 원하고있는 기사 나 자료를 알고 계십니까? – CoderDennis

+0

http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx는 CodeDOM을 다룹니다. 하지만 XML 리터럴은 특별히 VB 관련 기능이므로 리터럴 표현식 (http://msdn.microsoft.com/en-us/library/system.codedom)을 사용해야합니다. codesnippetexpression.aspx –