【发布时间】:2014-12-22 16:18:21
【问题描述】:
我有一些基础架构代码可以在常规 AppDomain 下运行,在其他情况下可以在 ASP.Net AppDomain 下运行。
这两种情况下代码的行为应该不同。
由于这是基础结构代码,我如何确定我在哪个类型的 AppDomain 下运行不依赖于 System.Web 命名空间 程序集?
例如:
public static string BasePath
{
get
{
var isAspNetAppDomain = ...
return isAspNetAppDomain
? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin")
: AppDomain.CurrentDomain.BaseDirectory;
}
}
【问题讨论】:
-
检查 cmets 中的链接问题。
-
@Andrey 链接的答案需要依赖
System.Web,这是我做不到的。我已编辑问题以反映此约束。 -
这个答案被批评为不可靠,这个更好,没有依赖关系:
(AppDomain.CurrentDomain.GetData(".appDomain") != null) -
无论如何,最好的方法是通过构造函数从最高级别传递此信息。喜欢
new YourClass(Env.AspNet)。调用代码总是知道的。