如何从AppDomain获取当前实例?

时间:2010-05-11 16:39:57

标签: c# .net-3.5 plugins appdomain

我使用默认的appdomain(AD),用于在隔离运行插件时创建新的appdomains(AD1)。 在创建新域时,我还连接了AppDomainUnload事件,以允许我调用清理代码等。

我似乎遇到的问题是:

1)从AD

创建AD1

2)在AD1中运行代码

3)调用AD.Unload(AD1)

代码切换到AD1并调用卸载事件,并传入对当前AppDomain(AD1)的引用。

此时我想获得对AD1中运行的当前实例的引用以调用shutdown方法,但是AppDomain类上没有GetInstance。

我有什么想法可以得到它吗?

2 个答案:

答案 0 :(得分:1)

您在寻找AppDomain.CurrentDomain吗?

答案 1 :(得分:1)

在AD1中创建实例时,可以将实例存储在AppDoman中的静态变量中,将静态范围限定为AppDomain。或者,如果这不是单件类型对象,则可以维护List<> AppDomain中的对象。

您可以将此“注册”放在插件实例的构造函数中。处理卸载时,您可以使用静态或枚举列表,并对对象执行所需的清理。