Ich benutze Delegate Factories, um ein Objekt mithilfe einer statischen .Create() - Funktion zu erstellen, da die Erstellung des Objekts etwas schwer ist und nicht gehört in einem Konstruktor. Dieses Objekt (UserToken) wird auf jedem Mvc Controller verwendet.Warum AutoFac Delegate Factories registriert InstancePerRequest wird jedes Mal aufgerufen, wenn ein Typ injiziert wird
Ich habe bemerkt, in meinem Codebeispiel, bei der Registrierung mit einer AutoFac-Delegiertenfunktion zum Erstellen von UserToken die UserToken.Create() wird mehrmals pro Anfrage aufgerufen. Ich habe erwartet, dass es nur einmal pro Anfrage aufgerufen wird und die resultierenden UserToken vom Builder gespeichert und wiederverwendet werden. Was fehlt mir hier? Ich möchte nur UserToken.Create einmal pro Anfrage aufgerufen.
builder.Register<Func<HttpContextBase, IUnitOfWork, UserAccountToken>>(
c => {
var db = c.Resolve<IUnitOfWork>();
var hc = c.Resolve<HttpContextBase>();
return (context, database) => { return UserAccountToken.Create(hc, db); };
}).InstancePerRequest();
builder.Register<UserAccountToken>(
c => {
var db = c.Resolve<IUnitOfWork>();
var hc = c.Resolve<HttpContextBase>();
return UserAccountToken.Create(hc, db);
}).As<IUserAccountToken>().InstancePerRequest();
Ok, ich bin das jetzt versuchen und aktualisiert so schnell wie möglich –
Wurde Ihr Problem @MarcusCobb gelöst? –