UsingContainerAsServiceLocator
using Castle.Core.Internal;
using Castle.MicroKernel;
using Castle.Windsor.Diagnostics.DebuggerViews;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Castle.Windsor.Diagnostics.Extensions
{
public class UsingContainerAsServiceLocator : AbstractContainerDebuggerExtension
{
private const string name = "Potential Service Locator usages";
private IUsingContainerAsServiceLocatorDiagnostic diagnostic;
public override IEnumerable<DebuggerViewItem> Attach()
{
IHandler[] array = diagnostic.Inspect();
if (array.Length == 0)
return Enumerable.Empty<DebuggerViewItem>();
Array.Sort(array, (IHandler f, IHandler s) => f.ComponentModel.Name.CompareTo(s.ComponentModel.Name));
ComponentDebuggerView[] array2 = array.ConvertAll(base.DefaultComponentView);
return new DebuggerViewItem[1] {
new DebuggerViewItem("Potential Service Locator usages", "Count = " + array2.Length.ToString(), array2)
};
}
public override void Init(IKernel kernel, IDiagnosticsHost diagnosticsHost)
{
diagnostic = new UsingContainerAsServiceLocatorDiagnostic(kernel);
diagnosticsHost.AddDiagnostic(diagnostic);
}
}
}