在另一个域中创建类型的实例

时间:2014-09-16 18:44:09

标签: c# reflection

我正在阅读一个代码,该代码通过反射在另一个域中创建一个类型的实例。为什么我们需要这样做?这种实例创建的优点是什么?

AppDomain _domain = AppDomain.CreateDomain("ServerImporterDomain");
var type = typeof (ServerImporter);
ServerImporter si = _domain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName) as ServerImporter;

1 个答案:

答案 0 :(得分:1)

这样做的一些原因是:

  • 安全沙箱。您创建的应用程序域可以在比主应用程序更低的信任级别运行。这似乎不是这里的情况,因为您没有将AppDomainSetup传递给CreateDomain调用。
  • 内存管理。如果给定的程序集需要大量内存,并且您知道只需要在短时间内使用该程序集,则可以将其加载到自己的域中,然后在完成后卸载它。
  • 不同的域可以不同方式处理未捕获的异常,并具有不同的ProcessExit处理程序。

好的写作是http://blogs.msdn.com/b/cclayton/archive/2013/05/21/understanding-application-domains.aspx