【发布时间】:2010-03-09 14:17:57
【问题描述】:
我想知道我是否可以知道一个对象是在哪个 appdomain 中创建的。这是一个单元测试,也是有用的一般知识。我有以下代码(这是示例代码)。
public Foo Create()
{
AppDomainSetup appDomainSetup =
new AppDomainSet { ApplicationBase = @"z:\SomePath" }
AppDomain appDomain =
AppDomain.CreateDomain("DomainName", null, appDomainSetup);
return (Foo) appDomain.CreateInstanceAndUnwrap("MyAssembly", "MyClass");
}
然后我打电话
Foo myFoo = Create();
我想做的是找出 myFoo 上的哪个 AppDomain 方法将被调用,以测试 Create 方法是否实际上创建了一个新的 AppDomain。我意识到我可以在 Foo 上添加一个方法,比如
public class Foo
{
public string appDomainName
{
get { return AppDomain.CurrentDomain.FriendlyName; }
}
}
这将为我提供 Foo 正在运行的 appdomain。我认为这不是仅用于单元测试的优雅解决方案。如果有人可以帮助定义类似的方法,那就太好了。
public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
// Insert voodoo here.
}
编辑: 感谢您的回复和cmets。我提出的问题已经得到解答,cmets 帮助我意识到我哪里出错了。我真正想要实现的是测试是否创建了一个新的 AppDomain。
【问题讨论】: