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