using System; using Castle.Windsor; using Castle.Windsor.Configuration.Interpreters; namespace ChadSoft { public static class IocContainer { private static IIocContainer current; internal static IIocContainer Current { get { if (current == null) current = new WindsorIocContainer(); return current; } set { current = value; } } public static T Resolve() { return Current.Resolve(); } } #region Interface: IIocContainer public interface IIocContainer { T Resolve(); } #endregion #region Class: WindsorIocContainer public class WindsorIocContainer : IIocContainer, IDisposable { readonly IWindsorContainer container; public WindsorIocContainer() { container = new WindsorContainer(new XmlInterpreter()); } public WindsorIocContainer(IWindsorContainer container) { this.container = container; } public T Resolve() { return container.Resolve(); } public void Dispose() { container.Dispose(); } } #endregion }