0

这似乎是一个奇怪的问题,但请听我说完。当我找到一个 xml 文件时,我正在查看 NeoAxis 引擎的文件,该文件似乎是存储在字符串中的代码行。

由于引擎是封闭源代码,我看不到它是如何工作的,但对于所有有经验的开发人员来说,这可能是如何工作的?

如果 XML 被加载到代码中,则字符串将被存储为字符串。但是有什么方法可以在诸如 c++ 或 c# 之类的语言中使用字符串作为程序中的语句?

我不知道我是否允许向您展示这个 XML 文件,但这些语句的前缀是一个字母和一个冒号。像这样:"M:Class.DoSomething();".

如果我能了解这是如何完成的,它将对很多事情都非常有用

4

4 回答 4

2

是的,只需将内置的代码编译器与您的字符串源代码一起使用:

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);

您可以在此处此处阅读有关它的更多信息。

于 2012-07-02T21:22:30.140 回答
0

XML 可用于存储任何内容,包括程序文本片段。XML 的使用者可以通过多种方式使用这些片段。它可能能够解释性地执行它们,或者它可能只是使用它们来构建一个完整的程序,然后以通常的方式编译和执行。

您发布的代码片段中的分号表明它可能不是 XPath,但除此之外它可能是。在 XML 文档中存储 XPath 表达式是很常见的做法。

于 2012-07-03T07:12:06.097 回答
0

M:Class.DoSomething()语法看起来很像它可能来自编译器生成的 XML 文档文件。

参见例如http://msdn.microsoft.com/en-us/library/aa288481(v=VS.71).aspx

于 2012-07-02T21:22:42.027 回答
0

如果您真的想知道这对 .NET 是如何工作的,那么您可以查看 Rick Strahl 关于.NET 中的动态代码执行的优秀教程。现在有点老了,但原则仍然适用

于 2012-07-02T21:27:07.740 回答