private void _reference_Disposed(object sender, EventArgs e)
 {
     ReferenceDisposed?.Invoke(sender, EventArgs.Empty);
     if (sender is IDto dto && _knownDtos.TryRemove(dto.DtoGuid, out var disposed) && sender == disposed)
     {
         disposed.PropertyChanged -= _referencePropertyChanged;
         disposed.Disposed        -= _reference_Disposed;
         Debug.WriteLine(disposed, $"Reference resolver - object {disposed.DtoGuid} disposed, generation is {GC.GetGeneration(dto)}");
     }
 }
Beispiel #2
0
 private void _reference_Disposed(object sender, EventArgs e)
 {
     ReferenceDisposed?.Invoke(sender, EventArgs.Empty);
     if (!(sender is IDto dto) || !_knownDtos.TryRemove(dto.DtoGuid, out var disposed) || sender != disposed)
     {
         return;
     }
     disposed.PropertyChanged -= _referencePropertyChanged;
     disposed.Disposed        -= _reference_Disposed;
     Logger.Trace("Reference resolver - object {0} disposed, generation is {1}", disposed, GC.GetGeneration(dto));
 }