我将如何避免在以下代码中使用所谓的魔术字符串?具体来说:System.Web.HttpContext.Current.Items["DomainDataContext"]
基本上,此类在 Controller 内实现了一个 DataContext。此类是类库的一部分,不能直接访问 DataContext 类(即 .dbml 文件)
public abstract class BaseControllerWithDataContext<TDataContext> : BaseController where TDataContext : DataContext, new()
{
public static TDataContext CurrentContext
{
get
{
if (System.Web.HttpContext.Current.Items["DomainDataContext"] == null)
{
TDataContext context = new TDataContext();
System.Web.HttpContext.Current.Items["DomainDataContext"] = context;
}
return (TDataContext) System.Web.HttpContext.Current.Items["DomainDataContext"];
}
}
protected TDataContext DataContext
{
get { return CurrentContext; }
}
protected override void OnActionExecuted(ActionExecutedContext filteContext)
{
if (System.Web.HttpContext.Current.Items["DomainDataContext"] == null)
{
return;
}
var context = (TDataContext) System.Web.HttpContext.Current.Items["DomainDataContext"];
context.Dispose();
}
}
我试图用另一个泛型类型参数来做,但是遇到了问题"cannot use sealed class 'System.String' as type parameter constraint"
那么解决这个问题的最佳方法是什么?