private CommandJsonNode(CommandJsonNode node, CommandTranslateJsonNode translateNode) : base(node.Key) { if (!node.IsKeyEqual(translateNode.Key)) { throw new InvalidOperationException($"translate node key {translateNode.Key} is not equal to {node.Key}"); } if ((node.Parameters == null || node.Parameters.Length == 0) && translateNode.Parameters != null) { throw new InvalidOperationException($"translate node {translateNode.Key} should not contains params"); } if (node.Parameters != null && translateNode.Parameters != null && node.Parameters.Length != translateNode.Parameters.Length) { throw new InvalidOperationException($"translate node {translateNode.Key} should contains same params count"); } Name = translateNode.Name; Category = node.Category; Description = translateNode.Description ?? node.Description; if (node.Parameters != null) { Parameters = ArrayHelper.Clone(node.Parameters); if (translateNode.Parameters != null) { for (int i = 0; i < translateNode.Parameters.Length; i++) { Parameters[i] = node.Parameters[i].TranslateWith(translateNode.Parameters[i]); } } } }
public CommandJsonNode TranslateWith(CommandTranslateJsonNode translateNode) => new CommandJsonNode(this, translateNode);