Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string keyName = $"{commandName}({paramCount})";
- if (!_commandTable.ContainsKey(keyName))
- {
- var firstOverload = _commandTable.Keys.ToList().Find(c => c.Contains($"{commandName}("));
- bool overloadExists = firstOverload != null;
- if (overloadExists && _commandTable[firstOverload].ParamTypes.All(t => t == typeof(String)))
- {
- var overloadCmd = _commandTable[firstOverload];
- if (overloadCmd.ParamCount < commandParams.Length)
- {
- var remainingParams = commandParams.ToList();
- object[] stringParams = new object[overloadCmd.ParamCount];
- for (int i = 0; i < overloadCmd.ParamCount; i++)
- {
- if (i + 1 >= overloadCmd.ParamCount)
- {
- stringParams[i] = string.Join(" ", remainingParams);
- }
- else
- {
- stringParams[i] = remainingParams.First();
- remainingParams.RemoveAt(0);
- }
- }
- return overloadCmd.Invoke(stringParams, overloadCmd.ParamTypes);
- }
- else throw new ArgumentException($"No overload of '{commandName}' with {paramCount} parameters could be found.");
- }
- else { throw new ArgumentException($"Command '{commandName}' could not be found."); }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement