2013-06-18 8 views
5

私は同様の動作をするいくつかのAPIコントローラを持っています。私はそれ自体がAPIコントローラである共通の基底クラスを作成しました。私の派生クラスでは、ベースAPIコントローラ(いくつかの一般的なヘッダー値など)で解決する必要があるいくつかの前提があります。しかし、私の問題はApiControllerベースの "Request"オブジェクトがnullです!c#ベースapicontrollerから派生 - ベースクラスのRequestオブジェクトはnullです

なぜこれが解決できますか?これは、継承とは何の関係もありません、それは事実で行うことです

BaseClass : ApiController 
{ 
public BaseClass() 
{ 
    _header1 = Request.Headers.GetValues("header1"); 
} 
} 

DerivedClass : BaseClass 
{ 
// getting error here because the base class isn't constructed because the Request object is null! and errors are thrown 
} 

答えて

7

コード例

(私は、ヘッダの値に基づいて値を代入していますように、それは、派生クラスの構築に重要です) ApiControllerはまだ初期化されておらず、コンストラクタからRequestオブジェクトにアクセスしようとしています。

コントローラーで何かを初期化する必要がある場合は、Initializeメソッドをオーバーライドしてそこで実行する必要があります(覚えておいてください)。

関連する問題