gpt4 book ai didi

c# - 可以使用 C# codeDOM 回调预编译函数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:52 25 4
gpt4 key购买 nike

我正在开发一款愚蠢的游戏,玩家可以通过编程程序来控制他们的角色,使其遵循。我正在使用 C# codeDOM 来编译播放器编写的代码,我希望播放器能够调用写入软件预编译部分的函数。例如:

由 codeDOM 在运行时编译的玩家编写的代码:

namespace AutoCrawl
{
public class Player
{
public void Go_Up()
{
Move("Up");
}
}
}

我的预编译代码:

    private void compileUserCode()
{
string code = UserCodeTextBox.Text;

CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();

parameters.GenerateInMemory = true;
parameters.GenerateExecutable = false;

CompilerResults results = provider.CompileAssemblyFromSource(parameters, code);
}

private void Move(string direction)
{
//move the player's character in the direction specified by "direction"
}

问题是我不知道如何告诉 codeDOM 编译器它可以在我自己的预编译代码中找到函数 'Move'。我从 codeDOM 编译器收到以下错误:

Error (CS0103): The name 'Move' does not exist in the current context

有可能吗?我似乎找不到其他人以这种方式使用 codeDOM 的任何示例。

感谢您的帮助!

最佳答案

执行此操作的最佳方法是将 CompilerParameters 上的 ReferencedAssemblies 属性设置为包含您的附加代码的库。

var parameters = CompilerParameters
{
ReferencedAssemblies = {
"my.dll",
// etc
}
};

这是一篇关于该主题的较长博客文章,包括指向 github 的链接 http://danielslaterblog.blogspot.co.uk/2015/05/programming-programming-computer-game.html

关于c# - 可以使用 C# codeDOM 回调预编译函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30299902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com