using System; using System.Collections; using System.Collections.Generic; using Flee.ExpressionElements.Base; using Flee.InternalTypes; namespace Flee.ExpressionElements.MemberElements { /// /// 封装参数列表的类 /// internal class ArgumentList { private readonly IList _myElements; public ArgumentList(ICollection elements) { ExpressionElement[] arr = new ExpressionElement[elements.Count]; elements.CopyTo(arr, 0); _myElements = arr; } private string[] GetArgumentTypeNames() { List l = new List(); foreach (ExpressionElement e in _myElements) { l.Add(e.ResultType.Name); } return l.ToArray(); } public Type[] GetArgumentTypes() { List l = new List(); foreach (ExpressionElement e in _myElements) { l.Add(e.ResultType); } return l.ToArray(); } public override string ToString() { string[] typeNames = this.GetArgumentTypeNames(); return Utility.FormatList(typeNames); } public ExpressionElement[] ToArray() { ExpressionElement[] arr = new ExpressionElement[_myElements.Count]; _myElements.CopyTo(arr, 0); return arr; } public ExpressionElement this[int index] => _myElements[index]; public int Count => _myElements.Count; } }