Пример #1
0
        //Kontrola jestli plugin obsahuje vsechny potrebne metody
        //TODO - nelze ale zjisit jestli metodu obsahuje jinak nez tim ze ji vola - nepouzivame tedy
        //
        public static bool ValidatePlugin(IPlugin plugin)
        {
            List<string> missingMethods = new List<string>();

            try
            {
                plugin.Name();
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Name");
            }

            try
            {
                plugin.Description();
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Description");
            }

            try
            {
                plugin.Version();
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Version");
            }

            try
            {
                //Tuto metodu pouzivame pouze v DLLExecute neni ji tedy nutne kontrolovatna DLR
                plugin.PluginScope();
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("PluginScope");
            }

            try
            {
                plugin.Execute(null, null);
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Execute");
            }
            catch (Exception) {}

            try
            {
                plugin.Install(null, null);
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Install");
            }
            catch (Exception) { }

            try
            {
                plugin.Test(null, null);
            }
            catch (MissingMemberException)
            {
                missingMethods.Add("Test");
            }
            catch (Exception) {}

            try
            {
                plugin.GetInstance();
            }
            catch (Exception)
            {
                missingMethods.Add("GetInstance");
            }

            if (missingMethods.Count > 0)
            {
                var log = NaverticaLog.GetInstance();
                log.LogError(missingMethods.Contains("Name") ? "" : plugin.Name(), "Missing methods in plugin: " + missingMethods.JoinStrings(", "));
            }

            return missingMethods.Count == 0;
        }