这似乎是一个奇怪的问题但听我说。当我发现一个xml文件看起来像是存储在字符串中的代码行时,我正在查看NeoAxis引擎的文件。
由于发动机处于关闭状态,我无法看到它是如何工作的,但对于所有经验丰富的开发人员来说,这怎么可能有效呢?
如果XML已加载到代码中,则字符串将存储为字符串。但有没有办法,用c ++或c#等语言在程序中使用字符串作为语句?
我不知道我是否允许向您展示此XML文件,但这些语句的前缀是字母和冒号。像这样:"M:Class.DoSomething();".
如果我能够了解这是如何完成的,那么对于很多事情来说非常有用
答案 0 :(得分:2)
是的,只需使用内置的Code Compiler和您的String源代码:
CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);
答案 1 :(得分:0)
M:Class.DoSomething()
语法看起来很像它可能来自编译器生成的XML文档文件。
参见例如http://msdn.microsoft.com/en-us/library/aa288481(v=VS.71).aspx
答案 2 :(得分:0)
如果您真的想知道这对.NET有何用处,那么您可以查看Rick Strahl关于Dynamic Code Execution in .NET的优秀教程。它现在有点旧了,但原则仍然适用
答案 3 :(得分:0)
XML可用于存储任何内容,包括程序文本的片段。 XML的使用者可以通过多种方式使用这些片段。它可能能够以解释方式执行它们,或者它可能只是使用它们来构造一个完整的程序,然后以通常的方式编译和执行。
您发布的代码片段中的分号表示它可能不是XPath,但除此之外它可能是。将XPath表达式存储在XML文档中是非常常见的做法。