Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
 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();
 }