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; }