@@ -17,7 +17,7 @@ public IGraph<DependencyNode, Dependency> Rewrite(
1717 var nodesMap = new Dictionary < Injection , DependencyNode > ( ) ;
1818 foreach ( var rootNode in from node in graph . Vertices where node . Root is not null select node )
1919 {
20- Override ( processedNodes , [ ] , nodesMap , [ ] , setup , graph , rootNode , ref maxId , entries ) ;
20+ Override ( processedNodes , [ ] , nodesMap , [ ] , setup , graph , rootNode , rootNode , ref maxId , entries ) ;
2121 if ( cancellationToken . IsCancellationRequested )
2222 {
2323 return graph ;
@@ -46,6 +46,7 @@ private DependencyNode Override(
4646 Dictionary < int , DpOverride > overridesMap ,
4747 MdSetup setup ,
4848 IGraph < DependencyNode , Dependency > graph ,
49+ DependencyNode rootNode ,
4950 DependencyNode targetNode ,
5051 ref int maxId ,
5152 List < GraphEntry < DependencyNode , Dependency > > entries )
@@ -83,6 +84,11 @@ private DependencyNode Override(
8384 return targetNode ;
8485 }
8586
87+ if ( targetNode . Root is not null )
88+ {
89+ rootNode = dependency . Source ;
90+ }
91+
8692 if ( dependency . Position . HasValue )
8793 {
8894 while ( lastDependencyPosition < dependency . Position && overridesEnumerator . MoveNext ( ) )
@@ -102,6 +108,7 @@ private DependencyNode Override(
102108 @override . Source with { Id = overrideId , ContractType = contractType } ,
103109 @override . Injections . Select ( i => i with { Type = typeConstructor . Construct ( setup , i . Type ) } ) . ToImmutableArray ( ) ) ;
104110
111+ setup . Overrides ? . Register ( rootNode , currentOverride ) ;
105112 overridesMap [ @override . Source . Id ] = currentOverride ;
106113 MdBinding ? overrideBinding = null ;
107114 foreach ( var injection in currentOverride . Injections )
@@ -122,7 +129,7 @@ private DependencyNode Override(
122129 targetNode ,
123130 injection ,
124131 contractType ,
125- Lifetime . PerResolve ,
132+ Lifetime . Transient ,
126133 typeConstructor ,
127134 ++ maxId ,
128135 MdConstructKind . Override ,
@@ -141,7 +148,7 @@ private DependencyNode Override(
141148 if ( ! overriddenInjections . Contains ( currentDependency . Injection )
142149 || ! nodesMap . TryGetValue ( currentDependency . Injection , out var overridingSourceNode ) )
143150 {
144- var source = Override ( processedNodes , overriddenInjections , nodesMap , overridesMap , setup , graph , currentDependency . Source , ref maxId , entries ) ;
151+ var source = Override ( processedNodes , overriddenInjections , nodesMap , overridesMap , setup , graph , rootNode , currentDependency . Source , ref maxId , entries ) ;
145152 currentDependency = currentDependency with { Source = source } ;
146153 }
147154 else
0 commit comments