Ich bin auf der Suche nach einer möglichen Lösung für die folgenden.Autofac. Basisklasse Eigenschaften gelöst ohne spezifische Injektion
Ich habe eine Basisklasse, die eine Abhängigkeit hat, die ich derzeit die Eigenschaft Injektion verwenden, um zu erfüllen.
public class BaseClass {
IService SomeService { get; set; }
}
Ich habe mehrere Klassen, die von dieser Basisklasse erben.
public class DerivedClass : BaseClass, IDerivedClass {
}
Und ich injiziere mit den folgenden.
builder.RegisterType<DerivedClass>().As<IDerivedClass>().OnActivated(e => e.Instance.SomeService = e.Context.Resolve<IService>());
Ich mache das für etwa 12 andere Klassen, die die Basisklasse erweitern. Gibt es eine Möglichkeit, dass jede Klasse, die BaseClass erweitert, meine IService-Registrierung erhält, ohne für jede Registrierung ein Aktivierungsereignis einzurichten? Es funktioniert gut, aber möchte nur die Registrierungen aufräumen.
Ich glaube, ich erweitern sollte. Ich habe einen Zirkelbezug, daher OnActivated. (Der Zirkelverweis macht Sinn). Ich denke, was ich meinte war, ich möchte das OnActivated auf alle Unterklassen auf BaseClass anwenden, ohne das OnActivated für jede Registrierung zu schreiben. (Der IService ist ein Singleton, der auch alle registrierten IDerivedClasses referenziert.) Es funktioniert gut mit dem OnActivated, wollte es nur aufräumen. –
Eigentlich könnte ich falsch liegen, aber wenn Sie kreisförmige Abhängigkeit von Singleton haben - es ist 99,9% Wahrscheinlichkeit, dass Sie einen Fehler gemacht haben beim Entwurf dieser Komponente. Und über dein Problem, wenn es immer noch für dich ist, werde ich das in den paar Tagen sehen, die jetzt sehr beschäftigt sind – Ph0en1x