我正在 C# 中实现动态代码执行,它允许用户为该特定应用程序编写自己的 C#。
我正在使用 C# 代码编译器来执行动态代码。 C#编译器读取代码文件并在新的命名空间(一个完整的新代码)中构造代码,编译并运行它。在其他 View 中,基本应用程序托管所有这些。
我希望由动态代码执行的主机应用程序中存在的方法很少。有什么方法可以执行其他命名空间或应用程序的方法吗?
最佳答案
你能强制你的脚本作者实现一个接口(interface),或者你甚至可以用你自己的实现包装他们的代码..
就像是
public interface IMyApplication
{
void DoSomethingInMyMainApp();
}
public interface IScriptKiddie
{
void Init(IMyApplication app);
}
然后你的 l33t 脚本编写者可以写
public class MyScript : IScriptKiddie //< you could emit this yourself
{
public void Init(IMyApplication app) //<could emit this yourself if scripter knows app keyword
{
app.DoSomethingInMyMainApp();
}
}
并且在您的应用程序中,您可以提供 IMyApplication 的具体实现,以便在编译、构造类然后传递到 Init 方法时传递到类中。
关于c# - 在C#winforms中通过动态代码执行不同namspace的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498827/