Możesz dodać rejestrowanie żądań do pojemnika rejestracji specjalny moduł, który złapie zdarzenie Preparing
dla wszystkich rejestracji:
public class LogRequestsModule : Module
{
protected override void AttachToComponentRegistration(
IComponentRegistry componentRegistry,
IComponentRegistration registration)
{
// Use the event args to log detailed info
registration.Preparing += (sender, args) =>
Console.WriteLine(
"Resolving concrete type {0}",
args.Component.Activator.LimitType);
}
}
Jest to najprostszy sposób, aby przejść i prawdopodobnie będzie Ci to, co chcesz . Zaraz po zdarzeniu Preparing
rejestruje informacje, zobaczysz wyskakujący wyjątek, a dowiesz się, który komponent rzucił.
Jeśli chcesz uzyskać bardziej wyszukane, można skonfigurować niektóre obsługi zdarzeń na pojemniku ChildLifetimeScopeBeginning
, ResolveOperationBeginning
, ResolveOperationEnding
i CurrentScopeEnding
wydarzeń.
- Podczas
ChildLifetimeScopeBeginning
trzeba by założyć coś do automatycznego dołączania do każdego życia dziecka ResolveOperationBeginning
imprez.
- Podczas
ResolveOperationBeginning
rejestrowałeś to, co zostanie rozwiązane.
- Podczas rejestracji
ResolveOperationEnding
rejestrowane są wszystkie wyjątki.
- Podczas
CurrentScopeEnding
trzeba zrezygnować z jakichkolwiek wydarzeń w tym zakresie, aby moduł czyszczący mógł wyczyścić cały okres z wszystkimi jego instancjami.
The Whitebox profiler project has a module, który implementuje niektóre z tych bardziej zaawansowanych logowania, ale to nie jest skonfigurowany do najnowszej Autofac więc trzeba by użyć go jako punkt wyjścia, a nie próbki wytnij/wklej.
Ponownie, najprostszym rozwiązaniem jest ten moduł, który napisałem powyżej.
Znam marszczy brwi na podziękowania. Jednak naprawdę doceniam wysiłek, jaki włożyliście w udzielanie odpowiedzi na pytania Autofac. Odpowiedzi są zawsze bardzo szczegółowe. – GraemeMiller
Właśnie za mniej wstrzykniętą zależność, tak jak ja, tak rejestrujesz ten moduł: builder.RegisterModule(); –
Travis dziękuje za odpowiedź, czy mógłbyś pokazać fragment kodu, jak rejestrować nazwę zakresu rozwiązanego typu? –