Я знаю, что эта ветка старая, но она все еще открыта, поэтому я считаю ее бесплатной игрой. К тому же я решил это сам, поэтому подумал, что отвечу, так как это было в моих результатах в Google. Может помочь другим.
Вот что я сделал для регистрации времени жизни ILifetimeScope
экземпляров:
class LifetimeLogger : IStartable
{
readonly ILifetimeScope _lifetimeScope;
public LifetimeLogger(ILifetimeScope lifetimeScope)
{
_lifetimeScope = lifetimeScope;
//_lifetimeScope = scope;
}
public void Start()
{
initLifetimeScope(_lifetimeScope);
}
static void initLifetimeScope(ILifetimeScope lifetimeScope)
{
//lifetimeScope.
lifetimeScope.ChildLifetimeScopeBeginning += (sender, args) =>
{
log("Begging lifetime scope (tag {0})", args.LifetimeScope.Tag);
initLifetimeScope(args.LifetimeScope);
};
lifetimeScope.CurrentScopeEnding += (sender, args) => log("Ending lifetime scope ({0})", args.LifetimeScope.Tag);
}
}
Вы можете использовать что-то подобное, и вы сможете выполнять логику в начале и в конце каждой дочерней области действия.