2013-06-18 11 views
5

Mam kilka kontrolerów APi o podobnym działaniu. Stworzyłem wspólną klasę bazową, która sama jest kontrolerem api. W moich klasach pochodnych mam pewne założenia, które powinny zostać rozwiązane w bazowym kontrolerze api (na przykład niektóre wspólne wartości nagłówków). Ale mój problem polega na tym, że w bazie ApiController obiekt "Request" ma wartość NULL!C# wywodzące się od apicontrollera bazowego - w klasie bazowej obiekt Request jest pusty

Dlaczego to i jak mogę rozwiązać? (Jest to ważne w budowie klasy pochodnej jak jestem wyznaczanie wartości w oparciu o wartości nagłówka) Przykład

Kodeks

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 
} 

Odpowiedz

7

To nie ma nic wspólnego z dziedziczenia, to zrobić z rzeczywistości ApiController nie został jeszcze zainicjowany i próbujesz uzyskać dostęp do obiektu Request z konstruktora.

Jeśli musisz zainicjować coś w swoim kontrolerze, powinieneś zastąpić metodę Initialize i zrobić to tam (pamiętaj, aby zadzwonić do bazy!).

Powiązane problemy