<PackageReference Include="Castle.Windsor" Version="5.1.1" />

ComponentDebuggerView

public class ComponentDebuggerView
using Castle.MicroKernel; using Castle.Windsor.Diagnostics.Helpers; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace Castle.Windsor.Diagnostics.DebuggerViews { [DebuggerDisplay("{description,nq}", Name = "{name,nq}")] public class ComponentDebuggerView { [DebuggerBrowsable(DebuggerBrowsableState.Never)] private readonly string description; [DebuggerBrowsable(DebuggerBrowsableState.Never)] private readonly IComponentDebuggerExtension[] extension; [DebuggerBrowsable(DebuggerBrowsableState.Never)] private readonly string name; [DebuggerBrowsable(DebuggerBrowsableState.Never)] public string Description { get { return description; } } [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public object[] Extensions { get { return extension.SelectMany((IComponentDebuggerExtension e) => e.Attach()).ToArray(); } } [DebuggerBrowsable(DebuggerBrowsableState.Never)] public string Name { get { return name; } } public ComponentDebuggerView(IHandler handler, string description, params IComponentDebuggerExtension[] defaultExtension) { name = handler.GetComponentName(); this.description = description; extension = defaultExtension.Concat(GetExtensions(handler)).ToArray(); } public static ComponentDebuggerView BuildFor(IHandler handler, string description = null) { List<IComponentDebuggerExtension> list = new List<IComponentDebuggerExtension> { new DefaultComponentViewBuilder(handler) }; list.AddRange(GetExtensions(handler)); return BuildRawFor(handler, description ?? handler.ComponentModel.GetLifestyleDescription(), list.ToArray()); } public static ComponentDebuggerView BuildRawFor(IHandler handler, string description, IComponentDebuggerExtension[] extensions) { return new ComponentDebuggerView(handler, description, extensions); } public static ComponentDebuggerView BuildRawFor(IHandler handler, string description, object[] items) { return new ComponentDebuggerView(handler, description, new ComponentDebuggerExtension(items)); } private static IEnumerable<IComponentDebuggerExtension> GetExtensions(IHandler handler) { return ((IEnumerable<IComponentDebuggerExtension>)handler.ComponentModel.ExtendedProperties["DebuggerExtensions"]) ?? Enumerable.Empty<IComponentDebuggerExtension>(); } } }