受限AppDomain中的C#类继承自主AppDomain中的其他类

受限AppDomain中的C#类继承自主AppDomain中的其他类,c#,inheritance,plugins,appdomain,mod,C#,Inheritance,Plugins,Appdomain,Mod,我尝试在C语言中创建一个简单的控制台修改项目,其中我的程序包含一个名为ElementInGame的抽象类列表。我希望能够创建从.txt文件继承ElementInGame的others类。ElementInGame类将包含一些基本方法(虚拟和非虚拟)。但我不希望这些其他修改过的类执行恶意代码,我希望它们只能从继承的类访问方法/属性。这是我的ElementInGame代码: (我的C#program#1) 使用系统; 名称空间修改 { //该类本身继承自MarshalByRefObject,可在2个

我尝试在C语言中创建一个简单的控制台修改项目,其中我的程序包含一个名为ElementInGame的抽象类列表。我希望能够创建从.txt文件继承ElementInGame的others类。ElementInGame类将包含一些基本方法(虚拟和非虚拟)。但我不希望这些其他修改过的类执行恶意代码,我希望它们只能从继承的类访问方法/属性。这是我的ElementInGame代码:

(我的C#program#1)

使用系统;
名称空间修改
{
//该类本身继承自MarshalByRefObject,可在2个不同的域中使用
公共抽象类elementName:MarshallByRefObject
{
公共元素名称()
{
Console.WriteLine(“创建的ElementInGame类”);
}
公共虚拟整数GetNumber()
{
返回10;
}
公共无效CountToTen()
{

对于(int i=0;i您正在从不同位置生成和加载引用程序集。您确实为输出设置了当前目录,但忘记将其分配给编译器参数

string outputDirectory = Directory.GetCurrentDirectory();
CompilerParams.OutputAssembly = Path.Combine(outputDirectory, "Test.dll");

这应该可以解决问题。

谢谢它的工作!我尝试通过在CreateObject方法中使用“ElementInGame o=(ElementInGame)Assembly.Load(assemblyName).CreateInstance(typeName);”来强制转换创建的对象,但它不工作。你知道为什么吗?使用“Assembly.LoadFrom()”从给定路径加载程序集。我有一个“System.Reflection.TargetInvocationException”。这是一个屏幕截图:(注意,我的视频是法语的)你需要更改你的应用程序域权限集以访问IO资源。我做了一些测试,现在它可以与“Assembly.Load()”一起正常工作,我不知道为什么第一次它不工作。再次感谢@vendettamit!
Called TestMethod() !
ElementInGame class created
Called Constructor() !
string outputDirectory = Directory.GetCurrentDirectory();
CompilerParams.OutputAssembly = Path.Combine(outputDirectory, "Test.dll");