Разбор литералов XML VB.NET
Если у меня есть текст, хранящийся в БД, файл, ресурс не имеет значения:
<code><%= Integer.MaxValue %></code>
Есть ли способ сделать это:
Dim el As XElement = XElement.Parse({variable containing text above})
и чтобы он оценивал выражение Integer.MaxValue?
3 ответа
Краткий ответ - нет. Компилятор знает, как это проанализировать, и заменяет ваш исходный код чем-то, что выглядит как в 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
Не легко. Ближе всего к нему можно было бы использовать CodeDOM для генерации некоторого кода - вам нужно будет создать модуль-обертку и Function
с Return
затем поместите выражение из базы данных в Return
- скомпилируйте его (и проверьте на наличие ошибок компиляции), запустите его и посмотрите результат. В общем, это будет очень медленно.
Я думаю, что они имеют ключевое значение для понимания работы встроенных выражений. Я задал это как отдельный вопрос.