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();
私はちょっと好きではありません。どちらがより良い方法かわかりません。ご意見をお聞かせください。