我希望知道是否可以确定一个对象是在哪个应用程序域中创建的。这是为了进行单元测试,同时也是有用的一般性知识。我有以下代码片段(这是示例代码,仅供说明)。
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的应用程序域。我认为这不是一个优雅的解决方案,仅适用于单元测试。如果有人能帮助定义一个类似于此的方法,那就太好了。
public string GetAppDomainNameWithDotNetWitchcraft(Foo myFoo)
{
// Insert voodoo here.
}
编辑: 感谢回复和评论。我所提出的问题已得到回答,评论也帮助我意识到了我的错误之处。我真正想要实现的是测试是否创建了一个新的AppDomain。