![]() |
1
68
使用AppDomain
将组件装入自己的组件更安全、更灵活。
因此,而不是 the answer given previously :
我建议如下(改编自 this answer to a related question ):
现在您可以卸载程序集并具有不同的安全设置。
如果您想要更大的灵活性和动态加载和卸载程序集的能力,您应该查看托管外接程序框架(即
|
![]() |
2
46
如果您无法访问
如果您可以访问
|
![]() |
3
11
我做的正是你在我的规则引擎中寻找的,它使用 CS-Script 用于动态编译、加载和运行C。它应该可以很容易地翻译成您正在寻找的内容,我将给出一个示例。首先,代码(删去部分):
这将采用T类型的接口,将.cs文件编译为程序集,实例化给定类型的类,并将实例化的类与T接口对齐。基本上,您只需确保实例化的类实现了该接口。我使用属性设置和访问所有内容,如:
对于您的示例,您希望调用run(),因此我将创建一个定义run()方法的接口,如下所示:
然后生成一个实现它的类,如下所示:
将rulesEngine的名称更改为类似testharness的名称,并设置属性:
然后,您可以在任何地方调用它,只需运行:
它可能对插件系统很有用,但我的代码仅限于加载和运行一个文件,因为我们的所有规则都在一个C源文件中。不过,我认为修改它非常容易,只需为您想要运行的每个文件传入类型/源文件即可。您只需要将代码从getter移到一个接受这两个参数的方法中。 同时,用你的易怒来代替Itesturner。 |
![]() |
4
5
您将需要使用反射来获取类型“testranner”。使用assembly.getType方法。
|
![]() |
5
2
构建程序集时,可以调用
请记住,您需要使用这个签名,并注意它不必命名。
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 7 月前 |