@@ -400,6 +400,7 @@ internal class ComponentSubscription
400400 private object ? _lastValue = _uninitializedValue ;
401401 private bool _hasPendingInitialValue ;
402402 private bool _ignoreUpdatedValues ;
403+ private string _storageKey ;
403404 private readonly PersistentComponentState _state ;
404405 private readonly ComponentState _subscriber ;
405406 private readonly string _propertyName ;
@@ -488,13 +489,13 @@ private void RestoreProperty()
488489 }
489490
490491 // The key needs to be computed here, do not move this outside of the lambda.
491- var storageKey = ComputeKey ( _subscriber , _propertyName ) ;
492+ _storageKey ?? = ComputeKey ( _subscriber , _propertyName ) ;
492493
493494 if ( _customSerializer != null )
494495 {
495- if ( _state . TryTakeBytes ( storageKey , out var data ) )
496+ if ( _state . TryTakeBytes ( ComputeKey ( _subscriber , _propertyName ) , out var data ) )
496497 {
497- Log . RestoringValueFromState ( _logger , storageKey , _propertyType . Name , _propertyName ) ;
498+ Log . RestoringValueFromState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , _propertyName ) ;
498499 var sequence = new ReadOnlySequence < byte > ( data ! ) ;
499500 _lastValue = _customSerializer . Restore ( _propertyType , sequence ) ;
500501 if ( ! skipNotifications )
@@ -505,14 +506,14 @@ private void RestoreProperty()
505506 }
506507 else
507508 {
508- Log . ValueNotFoundInPersistentState ( _logger , storageKey , _propertyType . Name , "null" , _propertyName ) ;
509+ Log . ValueNotFoundInPersistentState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , "null" , _propertyName ) ;
509510 }
510511 }
511512 else
512513 {
513- if ( _state . TryTakeFromJson ( storageKey , _propertyType , out var value ) )
514+ if ( _state . TryTakeFromJson ( ComputeKey ( _subscriber , _propertyName ) , _propertyType , out var value ) )
514515 {
515- Log . RestoredValueFromPersistentState ( _logger , storageKey , _propertyType . Name , "null" , _propertyName ) ;
516+ Log . RestoredValueFromPersistentState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , "null" , _propertyName ) ;
516517 _lastValue = value ;
517518 if ( ! skipNotifications )
518519 {
@@ -522,7 +523,7 @@ private void RestoreProperty()
522523 }
523524 else
524525 {
525- Log . NoValueToRestoreFromState ( _logger , storageKey , _propertyType . Name , _propertyName ) ;
526+ Log . NoValueToRestoreFromState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , _propertyName ) ;
526527 }
527528 }
528529 }
@@ -534,28 +535,28 @@ private void RestoreProperty()
534535 private Task PersistProperty ( )
535536 {
536537 // The key needs to be computed here, do not move this outside of the lambda.
537- var storageKey = ComputeKey ( _subscriber , _propertyName ) ;
538+ _storageKey ?? = ComputeKey ( _subscriber , _propertyName ) ;
538539
539540 var property = _propertyGetter . GetValue ( _subscriber . Component ) ;
540541 if ( property == null )
541542 {
542- Log . SkippedPersistingNullValue ( _logger , storageKey , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
543+ Log . SkippedPersistingNullValue ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
543544 return Task . CompletedTask ;
544545 }
545546
546547 if ( _customSerializer != null )
547548 {
548- Log . PersistingValueToState ( _logger , storageKey , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
549+ Log . PersistingValueToState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
549550
550551 using var writer = new PooledArrayBufferWriter < byte > ( ) ;
551552 _customSerializer . Persist ( _propertyType , property , writer ) ;
552- _state . PersistAsBytes ( storageKey , writer . WrittenMemory . ToArray ( ) ) ;
553+ _state . PersistAsBytes ( ComputeKey ( _subscriber , _propertyName ) , writer . WrittenMemory . ToArray ( ) ) ;
553554 return Task . CompletedTask ;
554555 }
555556
556557 // Fallback to JSON serialization
557- Log . PersistingValueToState ( _logger , storageKey , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
558- _state . PersistAsJson ( storageKey , property , _propertyType ) ;
558+ Log . PersistingValueToState ( _logger , ComputeKey ( _subscriber , _propertyName ) , _propertyType . Name , _subscriber . Component . GetType ( ) . Name , _propertyName ) ;
559+ _state . PersistAsJson ( ComputeKey ( _subscriber , _propertyName ) , property , _propertyType ) ;
559560 return Task . CompletedTask ;
560561 }
561562
0 commit comments