Ich arbeite an einer Implementierung von Log-Abfangjäger mit Castle Dynamic Proxy und StructureMap, so in meiner Abhängigkeit Registry ich StructureMap sagen alle Instanz von TrafficSourceRepository mit einem LoggingInterceptor zu dekorieren.Dynamische Proxy-Generierung nur für Singletons?
var proxyGenerator = new ProxyGenerator();
For<ITrafficSourceRepository>(Lifecycles.Singleton)
.DecorateAllWith(instance => proxyGenerator
.CreateInterfaceProxyWithTargetInterface(instance,
new LoggingInterceptor(LogManager.GetLogger("AgencyPlayground"))))
.Use<TrafficSourceRepository>();
Alles scheint in Ordnung zu sein, es funktioniert, aber die TrafficSourceRepository wird als Singleton
instanziiert werden, und ich will nicht, so dass ich ändern, um die Lebensdauer der aufgelösten TrafficSourceRepositories als Transient
:
var proxyGenerator = new ProxyGenerator();
For<ITrafficSourceRepository>(Lifecycles.Transient)
.DecorateAllWith(instance => proxyGenerator
.CreateInterfaceProxyWithTargetInterface(instance,
new LoggingInterceptor(LogManager.GetLogger("AgencyPlayground"))))
.Use<TrafficSourceRepository>();
und es mehr funktioniert nicht ... es ein Fehler ist, oder ich etwas falsch mache? Diese
von nicht funktioniert meinen Sie LoggingInterceptor nicht aufgerufen wird? – Evk
ja, wenn ich die Lebensdauer zu transient ändern, fängt der Interceptor nicht ab – InferOn
Unter Verwendung von genauem Code, den Sie gepostet haben, kann ich es nicht reproduzieren: mit Lifecycle Transient Interceptor wird immer noch genannt. Also solltest du vielleicht ein minimales Arbeitsbeispiel liefern um das zu reproduzieren. – Evk