using System; using System.Reflection; using Caliburn.Services; using Castle.MicroKernel; using Castle.Windsor; namespace Caliburn.Castle { public class WindsorContainerAdapter : IContainer { private readonly WindsorContainer _container; public WindsorContainerAdapter(WindsorContainer container) { _container = container; } public WindsorContainer Container { get { return _container; } } #region IContainer Members public virtual object Resolve(Type type) { return _container.Resolve(type); } public virtual object Resolve(string key) { return _container.Resolve(key); } public virtual object Resolve(Type serviceType, string key) { return _container.Resolve(key, serviceType); } public virtual void LoadFrom(Assembly assembly) { foreach (Type type in assembly.GetTypes()) { if (typeof(IFacility).IsAssignableFrom(type)) { IFacility facility = (IFacility)Activator.CreateInstance(type); _container.AddFacility(facility.GetType().FullName, facility); } } } #endregion } }