0

Controller.RequestController.Sessionなどのプロパティが仮想でないのはなぜですか?

私はそれが私の顔を見つめているに違いない。もしそうなら謝罪する.

これが私が持っているもので、改善しようとしています。モックControllerBase/スタブ/フェイク (何でも) を注入できますが、これは弱い設計であり、微妙なバグにつながる可能性があることを知っています (依存関係にアクセサーの使用を強制するものは何もありません)。

public class ControllerBase : Controller
{
    private readonly ModelStateDictionary modelStateDictionary;
    private readonly HttpRequestBase request;
    private readonly HttpSessionStateBase session;

    public ControllerBase()
    {
        session = null;
        request = null;
        modelStateDictionary = null;
    }

    public ControllerBase(HttpSessionStateBase ssb, HttpRequestBase rq, ModelStateDictionary msd)
    {
        session = ssb;
        request = rq;
        modelStateDictionary = msd;
    }

    protected HttpSessionStateBase GetSession()
    {
        return session ?? Session;
    }

    protected HttpRequestBase GetRequest()
    {
        return request ?? Request;
    }

    protected ModelStateDictionary GetModelState()
    {
        return modelStateDictionary ?? ModelState;
    }
}
4

0 に答える 0