private void CollectUserCommands() { // DO-DOMAIN: This will not work if assemblies are in different domain m_UserCommandTypes = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(Command)).ToArray(); var commandTypeArray = m_NativeCommandTypes.Concat(m_UserCommandTypes).ToArray(); var dummyCommands = commandTypeArray.Select(type => ((Command)Activator.CreateInstance(type))); m_CommandNames = dummyCommands.Select(c => c.Name).ToArray(); m_CommandTypes = new Dictionary <string, Type>(); foreach (var command in dummyCommands) { if (Logger.AssertIf(m_CommandTypes.ContainsKey(command.Name), "Command of type '" + command.GetType() + "' cannot be added because other command with same name already exists: " + command.Name)) { continue; } m_CommandTypes.Add(command.Name, command.GetType()); } NewUserCommands?.Invoke(); }
private void CollectUserPainters() { // DO-DOMAIN: This will not work if assemblies are in different domain var types = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(IPaintOnScreen)); m_UserPainters = types.TryResolveTypes(Container, Logger).Cast <IPaintOnScreen>().ToArray(); }
private void CollectDefaultUserSettings() { // DO-DOMAIN: This will not work if assemblies are in different domain var types = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(BaseSettings)); m_UserSettings = types.TryResolveTypes(Container, Logger).Cast <BaseSettings>().ToArray(); m_Settings = m_NativeSettings.Concat(m_UserSettings).ToArray(); }
private void CollectUserDetectors() { // DO-DOMAIN: This will not work if assemblies are in different domain m_UserDetectorTypes = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(FeatureDetector)).ToArray(); m_UserDetectors = m_UserDetectorTypes.TryResolveTypes(Container, Logger).Cast <FeatureDetector>().ToArray(); m_DetectorTypes = m_NativeDetectorTypes.Concat(m_UserDetectorTypes).ToArray(); m_Detectors = m_NativeDetectors.Concat(m_UserDetectors).ToArray(); m_DetectorNames = m_Detectors.Select(d => d.Name).ToArray(); }
private void CollectUserRunners() { // DO-DOMAIN: This will not work if assemblies are in different domain m_UserRunnerTypes = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(IRunner)).ToArray(); m_UserRunners = m_UserRunnerTypes.TryResolveTypes(Container, Logger).Cast <IRunner>().ToArray(); foreach (var runner in m_UserRunners) { runner.TestData = m_TestData; } m_RunnerTypes = m_NativeRunnerTypes.Concat(m_UserRunnerTypes).ToArray(); m_Runners = new Dictionary <Type, IRunner>(); foreach (var runner in m_NativeRunners.Concat(m_UserRunners)) { m_Runners.Add(runner.GetType(), runner); } }
private void CollectUserCommands() { // DO-DOMAIN: This will not work if assemblies are in different domain m_UserDesignerTypes = PluginLoader.IterateUserAssemblies(a => a).GetAllTypesWhichImplementInterface(typeof(CommandProperties)).ToArray(); m_DesignerTypes = m_NativeDesignerTypes.Concat(m_UserDesignerTypes).ToArray(); }