我如何避免在以下代码中使用所谓的魔术字符串?
特别是: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"
那么最好的方法是什么?