diff --git a/Assets/Reflex.EditModeTests/GarbageCollectionTests.cs b/Assets/Reflex.EditModeTests/GarbageCollectionTests.cs
index d0a48956..ce3b799b 100644
--- a/Assets/Reflex.EditModeTests/GarbageCollectionTests.cs
+++ b/Assets/Reflex.EditModeTests/GarbageCollectionTests.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.Linq;
using FluentAssertions;
using NUnit.Framework;
@@ -22,12 +21,6 @@ public static void ForceGarbageCollection()
GC.WaitForPendingFinalizers();
}
- [Conditional("REFLEX_DEBUG")]
- public static void MarkAsInconclusiveWhenReflexDebugIsEnabled()
- {
- Assert.Inconclusive("Disable REFLEX_DEBUG symbol when running garbage collection tests!");
- }
-
[Test, Retry(3)]
public void Singleton_ShouldBeFinalized_WhenOwnerIsDisposed()
{
diff --git a/Assets/Reflex.EditModeTests/ScopedTests.cs b/Assets/Reflex.EditModeTests/ScopedTests.cs
index 62d242d7..fe8f492a 100644
--- a/Assets/Reflex.EditModeTests/ScopedTests.cs
+++ b/Assets/Reflex.EditModeTests/ScopedTests.cs
@@ -96,8 +96,6 @@ public void ScopedFromFactory_ConstructedInstances_ShouldBeDisposed_WithinConstr
[Test, Retry(3)]
public void ScopedFromType_ConstructedInstances_ShouldBeCollected_WhenConstructingContainerIsDisposed()
{
- GarbageCollectionTests.MarkAsInconclusiveWhenReflexDebugIsEnabled();
-
WeakReference instanceConstructedByChild;
WeakReference instanceConstructedByParent;
var parentContainer = new ContainerBuilder().AddScoped(typeof(Service)).Build();
@@ -120,8 +118,6 @@ void Act()
[Test, Retry(3)]
public void ScopedFromFactory_ConstructedInstances_ShouldBeCollected_WhenConstructingContainerIsDisposed()
{
- GarbageCollectionTests.MarkAsInconclusiveWhenReflexDebugIsEnabled();
-
WeakReference instanceConstructedByChild;
WeakReference instanceConstructedByParent;
var parentContainer = new ContainerBuilder().AddScoped(_ => new Service()).Build();
diff --git a/Assets/Reflex.EditModeTests/TransientTests.cs b/Assets/Reflex.EditModeTests/TransientTests.cs
index 07a5fb8f..b1798482 100644
--- a/Assets/Reflex.EditModeTests/TransientTests.cs
+++ b/Assets/Reflex.EditModeTests/TransientTests.cs
@@ -50,8 +50,6 @@ public void TransientFromFactory_ConstructedInstances_ShouldBeDisposed_WithinCon
[Test, Retry(3)]
public void TransientFromType_ConstructedInstances_ShouldBeCollected_WhenConstructingContainerIsDisposed()
{
- GarbageCollectionTests.MarkAsInconclusiveWhenReflexDebugIsEnabled();
-
WeakReference instanceConstructedByChild;
WeakReference instanceConstructedByParent;
var parentContainer = new ContainerBuilder().AddTransient(typeof(Service)).Build();
@@ -74,8 +72,6 @@ void Act()
[Test, Retry(3)]
public void TransientFromFactory_ConstructedInstances_ShouldBeCollected_WhenConstructingContainerIsDisposed()
{
- GarbageCollectionTests.MarkAsInconclusiveWhenReflexDebugIsEnabled();
-
WeakReference instanceConstructedByChild;
WeakReference instanceConstructedByParent;
var parentContainer = new ContainerBuilder().AddTransient(c => new Service()).Build();
diff --git a/Assets/Reflex/Diagnosis/Diagnosis.cs b/Assets/Reflex/Diagnosis/Diagnosis.cs
index fcc95c49..cac3331f 100644
--- a/Assets/Reflex/Diagnosis/Diagnosis.cs
+++ b/Assets/Reflex/Diagnosis/Diagnosis.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using Reflex.Core;
@@ -19,7 +20,7 @@ internal static void IncrementResolutions(IResolver resolver)
[Conditional("REFLEX_DEBUG")]
internal static void RegisterInstance(IResolver resolver, object instance)
{
- resolver.GetDebugProperties().Instances.Add((instance, GetCallSite(3)));
+ resolver.GetDebugProperties().Instances.Add((new WeakReference(instance), GetCallSite(3)));
}
[Conditional("REFLEX_DEBUG")]
diff --git a/Assets/Reflex/Editor/DebuggingWindow/ReflexDebuggerWindow.cs b/Assets/Reflex/Editor/DebuggingWindow/ReflexDebuggerWindow.cs
index f8d603b9..26d5a6af 100644
--- a/Assets/Reflex/Editor/DebuggingWindow/ReflexDebuggerWindow.cs
+++ b/Assets/Reflex/Editor/DebuggingWindow/ReflexDebuggerWindow.cs
@@ -165,10 +165,10 @@ private void BuildDataRecursively(MyTreeElement parent, Container container)
kind: pair.Item1.GetType().Name.Replace("Singleton", string.Empty).Replace("Transient", string.Empty).Replace("Scoped", string.Empty).Replace("Resolver", string.Empty)
);
- foreach (var (instance, callsite) in pair.Item1.GetDebugProperties().Instances)
+ foreach (var (instance, callsite) in pair.Item1.GetDebugProperties().Instances.Where(tuple => tuple.Item1.IsAlive).Select(tuple => (tuple.Item1.Target, tuple.Item2)))
{
var instanceTreeElement = new MyTreeElement(
- $"{instance.GetType().GetName()} ({SHA1.ShortHash(instance.GetHashCode())})",
+ $"{instance.GetType().GetName()} ({SHA1.ShortHash(instance.GetHashCode())})",
resolverTreeElement.Depth + 1,
++_id,
InstanceIcon,
diff --git a/Assets/Reflex/Resolvers/ResolverDebugProperties.cs b/Assets/Reflex/Resolvers/ResolverDebugProperties.cs
index ca34a1ee..9bb5560b 100644
--- a/Assets/Reflex/Resolvers/ResolverDebugProperties.cs
+++ b/Assets/Reflex/Resolvers/ResolverDebugProperties.cs
@@ -1,11 +1,12 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace Reflex.Resolvers
{
public sealed class ResolverDebugProperties
{
public int Resolutions;
- public List<(object, List)> Instances { get; } = new();
+ public List<(WeakReference, List)> Instances { get; } = new();
public List BindingCallsite { get; } = new();
}
}
\ No newline at end of file