假设我有一个带有这样的多行字符串的类:
Public Class HelpSection
' This process name (Example: 'MyProcess.exe')
Public Shared ReadOnly ThisProcess As String =
Process.GetCurrentProcess().MainModule.ModuleName
Public Shared ReadOnly Syntax As String =
<a><![CDATA[
[+] Syntax:
ThisProcess (SWITCH)=(VALUE) (IN FILE)
]]></a>.Value
End Class
现在,当我调用多行字符串时:
Console.WriteLine(HelpSection4.Syntax)
它会打印出来:
ThisProcess (SWITCH)=(VALUE) (IN FILE)
但我想自动打印ThisProcess
变量内容(流程名称),如下所示:
MyProcess.exe (SWITCH)=(VALUE) (IN FILE)
那么我如何管理CDATA文字以动态设置变量内容?
这可能吗?
也许更好的方法来管理这个? (动态没有硬编码,请记住它是用于通用的)
更新
我试图重现@ Dan-o 解决方案但当然在我的情况下不能正常工作,因为它是CDATA文字,然后如何逃避它或做必要的修改?:
Dim ProcessName As String = "MyProcess.exe"
Dim Help As XElement =
<Help>
<Process><%= ProcessName %></Process>
<Syntax><a><![CDATA[
[+] Syntax:
<% ProcessName %> (SWITCH)=(VALUE) (IN FILE)
]]></a></Syntax>
</Help>
Console.WriteLine(Help.<Process>.Value)
Console.WriteLine(Help.<Syntax>.Value)
更新2
在一个简单的XML文件(例如,.NET代码片段)中,我使用了我以前学过的技巧来在CDATA中挖掘角色:
<Literal Editable="false">
<ID>cdataend</ID>
<ToolTip>Part of the CDATA end tag.</ToolTip>
<Default>></Default>
</Literal>
然后我可以在里面写>
非法字符,如下:
<Code Language="vb"><a><![CDATA[ something ]]$cdataend$</a>.Value ]]></Code>
问题是,我不知道这是否可以帮助我解决变量问题......只是我试图提出想法。
答案 0 :(得分:2)
根据MSDN:
Dim contactName As String = "Patrick Hines"
Dim contact As XElement =
<contact>
<name><%= contactName %></name>
</contact>
Console.WriteLine(contact)
根据你的情况调整它应该是一件非常简单的事情。