Ric*_*ams 3 c# model-view-controller plugins .net-assembly
我只是想知道如果我要在Web应用程序中加载相同的汇编字节两次会发生什么.
例如,我有这个代码
byte[] assem = System.IO.File.ReadAllBytes(appRoot + "/Plugins/Plugin.dll");
var loadedAssem = Assembly.Load(assem);
var plugin = loadedAssem.CreateInstance("Plugin.ThePlugin") as IPlugin;
Run Code Online (Sandbox Code Playgroud)
我运行此代码,并在第一个请求我假设它将程序集加载到ram(或http运行时appdomain?)然后我可以创建其中的任何内容的实例.
如果我再次运行此代码,请在第二个请求上说第一个请求上的程序集会发生什么?
ram还会存在吗?如果是这样,它如何区分两个组件?还是会覆盖以前的声明类?
这是我的理解,就像我在PHP中所做的那样,它不仅仅是"require_once"的情况.
这将加载两个不同的程序集副本,每个副本都可以从您的应用程序中使用.每个程序集中的类型是不同的类型,不会相互交互.例如,如果从Copy1获取Widget并尝试将其传递给在Copy2上获取Widget的方法,则会导致运行时失败.一旦以这种方式加载组件(即进入主AppDomain),就无法卸载组件.
关于实例化:
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |