次のコードで、いわゆるマジック ストリングの使用を避けるにはどうすればよいでしょうか。具体的には:System.Web.HttpContext.Current.Items["DomainDataContext"]
基本的に、このクラスはコントローラー内に 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"
では、これを行う最善の方法は何でしょうか?