void ResolvePlugin3()
    {
        var bar     = new Bar();
        var plugins = Assembly.GetAssembly(typeof(SampleHost))
                      .GetTypes()
                      .Where(t => t.IsClass && typeof(IPlugin).IsAssignableFrom(t))
                      .ToArray();
        var sut = new SampleHost(bar, plugins);

        sut.IsPluginSupported(typeof(Plugin3)).ShouldBeTrue();
        sut.CreateAndInvokePlugin(typeof(Plugin3));
        // no exception => succeeded
    }
    void SampleHostCanResolvePlugin3ButNot1And2()
    {
        var bar     = new Bar();
        var plugins = Assembly.GetAssembly(typeof(SampleHost))
                      .GetTypes()
                      .Where(t => t.IsClass && typeof(IPlugin).IsAssignableFrom(t))
                      .ToArray();
        var sut = new SampleHost(bar, plugins);

        sut.IsPluginSupported(typeof(Plugin1)).ShouldBeFalse();
        sut.IsPluginSupported(typeof(Plugin2)).ShouldBeFalse();
        sut.IsPluginSupported(typeof(Plugin3)).ShouldBeTrue();
    }
        /// <summary>
        /// Initialize the Explorer with the components
        /// </summary>
        /// <param name="filePath">Location of the Explorer Configuration</param>
        /// <param name="sideBar">SideBar displayed in the explorer</param>
        /// <param name="header">Header displayed in the explorer</param>
        /// <param name="tileControl">TileControl displayed in the explorer</param>
        /// <param name="host">SampleHost displayed in the explorer</param>
        public static void Init(string filePath, SideBar sideBar, Header header, TileControl tileControl, SampleHost host)
        {
            Instance._sampleManager = new SampleManager(filePath);
            Instance._header        = header;
            Instance._sideBar       = sideBar;
            Instance._tileControl   = tileControl;
            Instance._sampleHost    = host;
            sideBar.Samples         = Instance.Manager.SampleCollection.Samples.ToList();
            host.Navigate          += (s, e) =>
            {
                SampleItem sampleToNavigate = null;
                switch (e.NavigationDirection)
                {
                case Direction.Next:
                    sampleToNavigate = Instance.Manager.Next;
                    break;

                case Direction.Previous:
                    sampleToNavigate = Instance.Manager.Previous;
                    break;
                }
                Instance._sideBar.SelectSample(sampleToNavigate);
            };
            Instance.SyncContext   = SynchronizationContext.Current;
            Instance.IsInitialized = true;
        }