1

AsyncController「AbstractAbcContoller」という言葉を使用しています

public class AbstractAbcContoller : AsyncController
{
}

そして、新しく作成されたを継承するコントローラーがさらに3つありAbstractAbcContollerます。

これら 3 つのコントローラーのいずれかのコンストラクターを作成し、HttpContext/Request オブジェクトにアクセスしようとすると、常に null として取得されます。

HttpRequestBase をコンストラクターの引数として受け入れるサービス オブジェクトを初期化する必要があります。

代わりに、この回避策に落ち着かなければなりませんでした。

public class AbstractAbcController : AsyncController
{
    protected IAbcService GetAbcService(AbstractAbcController controller, HttpRequestBase request)
    {
        if (controller.GetType() == typeof (AbcAddressVerificationController))
            return new AbcAddressVerificationService(request);

        if (controller.GetType() == typeof(AbcPhoneVerificationController))
            return new AbcPhoneVerificationService(request);

        throw new ArgumentException();
    }
}

次に、コントローラー/アクションで次のようなものを使用します

IAbcService abcService = GetAbcService(this, Request);
abcService.DoSomething();

私はちょっと好きではありません。どちらがより良い方法かわかりません。ご意見をお聞かせください。

4

1 に答える 1