public virtual bool CheckArguments(string[] InArguments, out string OutMessage) { if (this.argumentsTypes != null && this.argumentsTypes.Length > 0) { for (int i = 0; i < this.argumentsTypes.Length; i++) { ArgumentDescriptionAttribute argumentDescriptionAttribute = this.argumentsTypes[i]; if (InArguments == null || i >= InArguments.Length) { if (!argumentDescriptionAttribute.isOptional) { OutMessage = string.Format("无法执行命令,因为缺少参数<{0}>, 类型为:<{1}>", argumentDescriptionAttribute.name, argumentDescriptionAttribute.argumentType.get_Name()); return(false); } DependencyDescription[] depends = argumentDescriptionAttribute.depends; if (depends != null && !this.CheckDependencies(argumentDescriptionAttribute, depends, InArguments, out OutMessage)) { return(false); } } else if (!argumentDescriptionAttribute.isOptional) { string text; if (!CheatCommandBase.TypeCastCheck(InArguments[i], this.argumentsTypes[i], out text)) { OutMessage = string.Format("无法执行命令,因为参数[{2}]=\"{0}\"无法转换到{1}, 错误信息:{3}", new object[] { InArguments[i], this.argumentsTypes[i].argumentType.get_Name(), this.GetArgumentNameAt(i), text }); return(false); } } else { DependencyDescription[] depends2 = argumentDescriptionAttribute.depends; string text2; if (depends2 != null && !this.CheckDependencies(argumentDescriptionAttribute, depends2, InArguments, out OutMessage) && !CheatCommandBase.TypeCastCheck(InArguments[i], this.argumentsTypes[i], out text2)) { OutMessage = string.Format("无法执行命令,因为参数[{2}]=\"{0}\"无法转换到{1}, 错误信息:{3}", new object[] { InArguments[i], this.argumentsTypes[i].argumentType.get_Name(), this.GetArgumentNameAt(i), text2 }); return(false); } } } } OutMessage = string.Empty; return(true); }
public static bool TypeCastCheck(string InArgument, ArgumentDescriptionAttribute InArgDescription, out string OutErrorMessage) { DebugHelper.Assert(InArgDescription != null); return(CheatCommandBase.TypeCastCheck(InArgument, InArgDescription.argumentType, out OutErrorMessage)); }