Skip to content

Instantly share code, notes, and snippets.

@GregOnNet
Created August 18, 2015 13:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GregOnNet/1b1e3cd505e79f22c0b4 to your computer and use it in GitHub Desktop.
Save GregOnNet/1b1e3cd505e79f22c0b4 to your computer and use it in GitHub Desktop.
public override void OnBeginRequest(HttpContextBase context, IWindsorContainer container)
{
var parameters = new Arguments(new
{
response = context.Response,
pdfFormatter = container.Resolve<IFormatPdfResponse>()
});
container.Resolve
<IDispatchPdfReponses>(parameters)
.Listen();
}
@GregOnNet
Copy link
Author

Intro

  • Ich erhalte in einem WebProjekt für jeden Request einen HttpContext.
  • Im HttpContext befindet sich ein Response-Objekt, dass ich in ein Pdf umwandle.
  • Dazu gibt es einen Service der IDispatchPdfResonses implementiert.
  • Dieser Service hängt eben so von einem Service IFormatPdfResponse ab.

Frage

  • IFormatPdfResponse bleibt immer gleich, nur die HttpResponse ändert sich.
  • Gibt es in Windsor eine Möglichkeit, dass ich den Konstruktor lediglich das neue Response-Objekt übergebe, ohne, dass ich IFormatPdfResponse noch mal explizit auflösen muss?
  • Mich stört es ein wenig im code

//cc @agross

@agross
Copy link

agross commented Aug 18, 2015

Ich glaube mich zu erinnern, dass Resolve<T>() ein anonymes Objekt übernehmen kann um Parameter namentlich zu binden. Besser wäre jedoch die API von IFormatPdfResponse so anzupassen, dass die veränderlichen Parameter (HttpRequest) als Parameter von Listen, nicht aber vom ctorübergeben werden. Dann könnte IFormatPdfResponse problemlos mit Singleton-Lifesytle laufen.

@GregOnNet
Copy link
Author

Hey, super Einfall. Danke!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment