/// <summary> /// Executes the specified domains. /// </summary> /// <param name="domains">The domains.</param> /// <param name="args">The arguments.</param> /// <param name="callback">The callback.</param> /// <returns></returns> public static ExecutedResult Execute(Domains domains, IAddonInteractive interactive) { var r = default(ExecutedResult); lock (((ICollection)s_container).SyncRoot) { switch (s_container.Count) { case 0: r = ExecutedResult.NoAddon; break; case 1: { var m = s_container[0]; var diff = Diff.Compare(m.Metadata.Domains, domains.Keywords); if (diff != 0.0 && Toggle[m.Metadata.Name]) { var result = m.CreateExport().Value.Execute(domains, interactive); r = result.HasValue ? (result.Value ? ExecutedResult.Success : ExecutedResult.Failure) : ExecutedResult.Disabled; } else { r = ExecutedResult.NoMatched; } break; } default: { var top_v = 0.0; var a = default(ExportFactory <IAddonContract, AddonDefinition>); foreach (var m in s_container) { var diff = Diff.Compare(m.Metadata.Domains, domains.Keywords); // Debug.WriteLine("N: " + m.Metadata.Name + " | " + diff); if (diff >= top_v && Toggle[m.Metadata.Name]) { top_v = diff; a = m; } } if (top_v == 0.0) { r = ExecutedResult.NoMatched; } else if (Toggle[a.Metadata.Name]) { //Found the highest similar object var result = a.CreateExport().Value.Execute(domains, interactive); r = result.HasValue ? (result.Value ? ExecutedResult.Success : ExecutedResult.Failure) : ExecutedResult.Disabled; } break; } } } return(r); }
/// <summary> /// Executes the action. /// </summary> /// <param name="args">The arguments.</param> /// <param name="callback">The callback.</param> /// <returns></returns> protected abstract bool ExecuteImpl(Domains domains, IAddonInteractive interactive);
public bool?Execute(Domains domains, IAddonInteractive interactive) { return(false); }
bool?IAddonContract.Execute(Domains domains, IAddonInteractive interactive) { return(this.ExecuteImpl(domains, interactive)); }
protected override bool ExecuteImpl(Domains domains, IAddonInteractive interactive) { interactive.WriteText("Mock Addon"); return(true); }