@@ -54,6 +54,8 @@ public void WhenTwoRemovedEventHandlersAddedThenOneRemovedEventIsFired()
5454 this . removedItems . First ( ) . Key . Should ( ) . Be ( 1 ) ;
5555 }
5656
57+ // backcompat: remove conditional compile
58+ #if NETCOREAPP3_0_OR_GREATER
5759 [ Fact ]
5860 public void WheUpdatedEventHandlerIsRegisteredItIsFired ( )
5961 {
@@ -88,7 +90,7 @@ public void WhenTwoUpdatedEventHandlersAddedThenOneRemovedEventIsFired()
8890
8991 this . updatedItems . First ( ) . Key . Should ( ) . Be ( 1 ) ;
9092 }
91-
93+ #endif
9294 private void OnItemRemoved ( object sender , ItemRemovedEventArgs < int , int > e )
9395 {
9496 this . removedItems . Add ( e ) ;
@@ -142,5 +144,36 @@ protected override ItemUpdatedEventArgs<K, V> TranslateOnUpdated(ItemUpdatedEven
142144 return new ItemUpdatedEventArgs < K , V > ( inner . Key , inner . OldValue . ValueIfCreated , inner . NewValue . ValueIfCreated ) ;
143145 }
144146 }
147+
148+ // backcompat: remove (virtual method with default impl only needed for back compat)
149+ [ Fact ]
150+ public void WhenUpdatedEventHandlerIsRegisteredAndProxyUsesDefaultUpdateTranslateItIsFired ( )
151+ {
152+ var proxy = new EventProxyWithDefault < int , int > ( this . testCacheEvents ) ;
153+
154+ proxy . ItemUpdated += OnItemUpdated ;
155+
156+ this . testCacheEvents . FireUpdated ( 1 , new AtomicFactory < int , int > ( 2 ) , new AtomicFactory < int , int > ( 3 ) ) ;
157+
158+ #if NETCOREAPP3_0_OR_GREATER
159+ this . updatedItems . First ( ) . Key . Should ( ) . Be ( 1 ) ;
160+ #else
161+ this . updatedItems . Should ( ) . BeEmpty ( ) ;
162+ #endif
163+ }
164+
165+ // backcompat: remove (class uses default TranslateOnUpdated method)
166+ private class EventProxyWithDefault < K , V > : CacheEventProxyBase < K , AtomicFactory < K , V > , V >
167+ {
168+ public EventProxyWithDefault ( ICacheEvents < K , AtomicFactory < K , V > > inner )
169+ : base ( inner )
170+ {
171+ }
172+
173+ protected override ItemRemovedEventArgs < K , V > TranslateOnRemoved ( ItemRemovedEventArgs < K , AtomicFactory < K , V > > inner )
174+ {
175+ return new ItemRemovedEventArgs < K , V > ( inner . Key , inner . Value . ValueIfCreated , inner . Reason ) ;
176+ }
177+ }
145178 }
146179}
0 commit comments