2016-08-22 2 views
0

Ich bin neu in Autofac und erforsche verschiedene Best Practices. Nach diesem Dokument empfiehlt es sich, häufig verwendete Komponenten mit lambdas zu registrieren.Soll ich per Anfrage eine konkrete Klasse mit einem Lambda mit Autofac registrieren?

Ich habe eine konkrete Klasse, CurrentUser, die IUserIdentity implementiert. Diese konkrete Klasse nimmt HttpContextBase auf, um die Identität des Benutzers (ID, Rollen, usw.) abzurufen. Meine Dienste hängen offensichtlich von IUserIdentity ab.

Ich derzeit Registrierung dies wie folgt aus:

builder.RegisterType<CurrentUser>().As<IUserIdentity>().InstancePerRequest()

Nach dem Lesen dieses Artikels, ich frage mich, ob ich es mit einem Lambda registrieren sollte, da diese viele mal gelöst werden lassen?

Wenn ja, wie stelle ich HttpContextBase da in meinem aktuellen Code Autofac löst es für mich.

+0

Ihr Link sagt: "[Dies] macht nur Sinn für Komponenten, die in vielen Objektgraphen vorkommen." – stuartd

Antwort

1

Ich glaube nicht, Sie kümmern sollten, wenn Sie tatsächlich sind Ihren Code zu optimieren, aber in dem Fall, dass Sie immer noch, es zu tun haben wollen, dass es so etwas wie folgt aussehen würde:

auch
builder.Register(context => { 
    var contextBase = context.Resolve<HttpContextBase>(); 
    return new CurrentUser(contextBase); 
}).As<IUserIdentity>().InstancePerRequest(); 
+0

Ich muss sagen, dass es mir unangenehm ist, "unoptimierten" Code zu schreiben;) Danke für den Tipp, wie man den Lambda macht! – Airn5475

Verwandte Themen