如何创建一个全局可访问的 Context
对象类似于 HttpContext
目的?
我想创建一个自定义类库,我想从网站项目中引用它。在网站项目中,我希望能够在全局范围内调用以下内容:
ClassLibraryName.Context
我无法创建全局
property
直接在我的类库中,那么这应该如何实现? (我已经看到其他应用程序/产品使用这种方法,其中之一是 Sitecore,它有一个自定义的 Sitecore.Context 对象可用)编辑
这可能是一个“有效”的解决方案吗?
namespace MyLibrary
{
public class Context
{
public static object ContextualObject
{
get;
set;
}
}
}
最佳答案
是的,这并不难实现,如果您总是在 ASP.NET 应用程序的上下文中运行此类,请使用以下方法:
namespace MyLibrary
{
public class Context
{
public static object ContextualObject
{
get
{
var ctx = System.Web.HttpContext.Current.Items[typeof(Context)];
if (ctx == null)
{
ctx = new Context();
System.Web.HttpContext.Current.Items.Add(typeof(Context), ctx);
}
return ctx;
}
set { System.Web.HttpContext.Current.Items[typeof(Context)] = ctx; }
}
}
}
本质上包装现有的 HTTP 上下文以提供您自己的服务。这种方法也不会在应用程序存在时存储对象,它只为当前上下文创建它,当响应结束时,它会死亡,并在下一个生命周期中重新生成。如果这不行,请存储对上下文的静态引用。
我在 http://nucleo.codeplex.com 的类库中类似地使用了这种方法。 ,效果很好。
哈。
关于ASP.NET - 创建自定义上下文对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153580/