2010-11-25 3 views
2

Ich brauche Daten von RequestContext, um verfügbar zu sein, wenn der Konstruktor auf einem meiner Domain-Objekte ausgeführt wird. Das folgende Beispiel ist das, was ich bereits mache.Wie werden RequestContext-Daten dem Konstruktor eines Domänenobjekts bereitgestellt?

public Site(IDataUniverseService dataUniverse, IRegionService regionService) 
{ 
    this.DataUniverse = dataUniverse.GetDataUniverse(this.Id); 
    this.Region = regionService.GetRegion(this.Id, /* this value comes as a URL parameter */); 
} 

Das ist in Ordnung, weil StructureMap die Dienste leicht liefern kann, weil sie von der Domäne kommen.

Aber wie kann ich es bekommen, um auch eine Schnittstelle zum RequestContext zu liefern? Oder sollte ich das anders machen?

Dies ist eine Art, was ich im Sinne habe:

public Site(IDataUniverseService dataUniverse 
    , IRegionService regionService 
    , IRequestContext context) 
{ 
    var region = context.RouteData.Values["region"].ToString() 

    this.DataUniverse = dataUniverse.GetDataUniverse(this.Id); 
    this.Region = regionService.GetRegion(this.Id, region); 
} 

sondern im Idealfall würde die IRequestContext nur diesen Wert hat als Eigenschaft leicht verfügbar ist, anstatt die RouteData.Values["region"].ToString()

Antwort

4

hinzufügen Parameter entsprechen, was Werte, die Sie von RequestContext benötigen, damit der Aufrufer die erforderlichen Daten extrahieren und nur senden kann. Ihre Domänenobjekte sollten nicht direkt mit dem Anforderungskontext umgehen.

Verwandte Themen