7
我想知道是否可以告诉哪个appdomain创建了一个对象。这是用于单元测试,但也是有用的常识。我有以下几段代码(这是示例代码)。是否有可能判断一个对象是否在另一个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的方法将被调用,以测试的创建方法实际上已经创造了一个新的AppDomain中。我知道我可以在Foo上添加一个方法类似
public class Foo
{
public string appDomainName
{
get { return AppDomain.CurrentDomain.FriendlyName; }
}
}
这将为我,foo是在运行应用程序域。我不认为这仅仅是一个单元测试的完美的解决方案。如果有人能够帮助定义类似的方法,那将是非常好的。编辑: 感谢您的回复和评论。我提出的问题已经得到解答,评论帮助我意识到我出错的地方。我真正想要实现的是测试一个新的AppDomain是否被创建。
有趣。我没有想到这一点。 – 2010-03-09 14:49:25
我不介意一点点的探讨。这很有用。虽然如果我在一个单元测试中看到它确实有设计气味:) – btlog 2010-03-09 15:16:41
@btlog - 我很好奇如何知道一个对象是否在不同的AppDomain中是一种设计气味,但是编写一个单元测试以确保它是isn (如果你明白我的意思)? – 2010-03-09 19:02:56