using System; using System.Collections.Generic; using System.Reflection; using JD.Collections; using JD.Kernel.Classes; using JD.LogService; namespace JD.TeaBoxAddinSystem.Addins.MEF { public static class AddinService { #region Variables private static IAddinService ms_instance = new EmptyAddinService(); #endregion #region Properties private static IAddinService Instance { get { return ms_instance; } } public static IEnumerable Addins { get { return Instance.Addins; } } public static ObservableList DynamicAssemblies { get { return Instance.DynamicAssemblies; } } #endregion #region Methods public static IDisposable Use(IAddinService instance) { var oldInstance = ms_instance; ms_instance = instance; return new DisposableHelper(() => ms_instance = oldInstance); } #region Facade /// /// Satisfies all imports on the given . /// /// public static void Compose(object part) { Instance.Compose(part); } /// /// Creates and composes a new object of type . /// /// /// public static T Compose() where T: new() { T instance = new T(); Compose(instance); return instance; } /// /// Validates the addin ecosystem for common errors/problems. /// /// public static bool Validate(ILogger logger) { return Instance.Validate(logger); } #endregion #endregion } }