Internals/IReactiveObject.cs

An internal interface marker IReactiveObject and extension methods intended to set debug metadata on reactive objects. The file defines IReactiveObject (empty) and ReactiveObjectExtensions with a SetDebugInfo extension that accepts optional name, icon, location, parent and (in SANDBOX build) a PropertyDescription, but the method body is empty and many conditional compilation regions remove content in other builds.

Rough Code
using System.Diagnostics;

namespace Sandbox.Reactivity.Internals;

internal interface IReactiveObject
{
#if DEBUG && SANDBOX
#endif
}

internal static class ReactiveObjectExtensions
{
	extension(IReactiveObject reactive)
	{
		[Conditional("DEBUG")]
		public void SetDebugInfo(
			string? name = null,
			string? icon = null,
			string? location = null,
			object? parent = null,
#if SANDBOX
			PropertyDescription? container = null
#else
#endif
		)
		{
#if DEBUG && SANDBOX
#endif
		}
	}
}