有没有办法将 .txt 文件作为类加载,然后我的主程序可以从中调用函数?我基本上试图向我的简单应用程序添加 mod 支持,用户可以从每个文件中选择选项。该文件遵循类似(但不相同)的格式,带有一堆在主程序中调用的空位(函数)。
我怎样才能做到这一点?考虑到它不会与程序的其余部分一起编译,这是否可能做到(可能不可能,回答我自己的问题?)?
Thanks!
看我对这个问题的回答:在运行时编译 C# 数组并在代码中使用它?
本质上,您需要将文本文件拉入 CodeDom 并编译它。之后,创建一些动态方法作为执行助手可能会有所帮助。
- 接收上传的文件
- 对文件执行任何所需的验证
- 将文件作为字符串读入 CodeDom
- 处理任何编译器/结构错误
- 使用 Linq 表达式树或动态方法创建辅助方法,以便通过编译对象桥接新类和现有代码之间的链接(否则,所有新方法都需要使用反射来调用)
var csc = new CSharpCodeProvider( new Dictionary<string, string>() { { "CompilerVersion", "v4.0" } } );
var cp = new CompilerParameters() {
GenerateExecutable = false,
OutputAssembly = outputAssemblyName,
GenerateInMemory = true
};
cp.ReferencedAssemblies.Add( "mscorlib.dll" );
cp.ReferencedAssemblies.Add( "System.dll" );
StringBuilder sb = new StringBuilder();
// The string can contain any valid c# code
sb.Append( "namespace Foo{" );
sb.Append( "using System;" );
sb.Append( "public static class MyClass{");
sb.Append( "}}" );
// "results" will usually contain very detailed error messages
var results = csc.CompileAssemblyFromSource( cp, sb.ToString() );
另外,请参阅此主题:在 C# 中实现脚本语言. 铁蟒使用 DLR 可能适合您的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)