using System; using System.ComponentModel.Composition.Hosting; using System.Diagnostics; using System.Reflection; using System.ComponentModel.Composition; namespace Pithos.ShellExtensions { public class IoC { public CompositionContainer Container; static readonly Lazy Instance=new Lazy(); public static IoC Current { get { return Instance.Value; } } public IoC() { var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly())); Container=new CompositionContainer(catalog); } public T Compose(T target) { try { Container.ComposeParts(target); return target; } catch (Exception exc) { Trace.TraceError(exc.ToString()); throw; } } } }