public bool Call(string name, IReadOnlyList <ExpressionVariant> arguments, out ExpressionVariant result) { result = default; if (!_registry.TryGetValue(name, out var nameGroup)) { return(false); } if (!nameGroup.TryGetValue(arguments.Count, out var countGroup)) { return(false); } foreach (var record in countGroup) { var match = true; for (var c = 0; c < arguments.Count; c++) { if (record.Types[c] != arguments[c].Type) { match = false; break; } } if (match) { result = record.Delegate(arguments); return(true); } } return(false); }
public bool Call(string name, IReadOnlyList <ExpressionVariant> arguments, out ExpressionVariant result) => _registry.Call(name, arguments, out result);