0

次のコードで、いわゆるマジック ストリングの使用を避けるにはどうすればよいでしょうか。具体的には: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"

では、これを行う最善の方法は何でしょうか?

4

0 に答える 0