Ich habe eine generische Schnittstelle wie folgt definiert:TornLifestyle einfachen Injektor
public class ProviderPlanManagementRepo : IPlanManagmentRepository<Provider>
alles funktioniert durch die Registrierung der Schnittstelle wie folgt aus::
public interface IPlanManagmentRepository<TEntity> where TEntity:class
Wenn ich eine konkrete Umsetzung wie folgt definieren
container.Register(typeof(IPlanManagmentRepository<>),
new [] { typeof(IPlanManagmentRepository<>).Assembly},
Lifestyle.Scoped);
Allerdings, wenn diese Klasse a lso Griffe mehr Sachen und ich füge eine zusätzliche Schnittstelle:
public interface IProviderPlanManagementRepo
{
void doSomethingSpecificToProviderHere();
}
public class ProviderPlanManagementRepo : IProviderPlanManagementRepo,
IPlanManagmentRepository<Provider>
{
}
Dann bekomme ich diesen Fehler:
-[Torn Lifestyle] The registration for IPlanManagmentRepository maps to the same implementation and lifestyle as the registration for IProviderPlanManagementRepo does. They both map to ProviderPlanManagementRepo
Ich habe auch versucht IPlanManagmentRepository in IProviderPlanManagementRepo zu erben, aber den gleichen Fehler bekam.
Sollte diese Klasse nur die Implementierung von der generischen Schnittstelle behandeln? oder ist es möglich, dies mit einem einfachen Injektor zu erreichen?
Dank @Steven, wie du erwähnt mein DbContext ist Bereich, ich versuchte Ihren Vorschlag und es funktioniert, auch wenn DbContext Bereich ist, aber ich frage mich, ob dies einige potenzielle Probleme haben kann, wenn ich 3 Repositories einschließlich der genannten verwenden oben (der, der vorübergehend ist), werden alle 3 den gleichen DbContext teilen? Dies ist wichtig, da sie alle die gleiche Transaktion teilen müssen. –
@ danif430: Ja, sie werden die gleiche Instanz teilen. Versuch es. – Steven