2009-09-04 9 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が含まれています。しかし、これはVB固有の機能なので、XMLリテラルは特に扱わないので、リテラル式(http://msdn.microsoft.com/en-us/library/system.codedom)を使用する必要があります。 codesnippetexpression.aspx –