public FunctionParammeterInfo(string name, string title, string description, bool isRequired, string systemType, ParammeterType parammeterType, string[] selectionItems) { Name = name; Title = title; Description = description; IsRequired = isRequired; SystemType = systemType; SelectionItems = selectionItems; ParammeterType = parammeterType; }
/// <summary> /// 获取所有参数的信息列表 /// </summary> /// <returns></returns> public IEnumerable <FunctionParammeterInfo> GetFunctionParammeterInfo() { var props = FunctionParameterType.GetProperties(); ParammeterType parammeterType = ParammeterType.Text; foreach (var prop in props) { List <string> selectionItems = null; //判断是否存在选项 if (prop.PropertyType.IsArray) { var obj = GenerateParameterInstance(); var selection = prop.GetValue(obj, null); if (selection == null) { continue;//此参数不加入 } selectionItems = new List <string>(); parammeterType = ParammeterType.SingleSelection;//TODO:根据其他条件(如创建一个新的Attribute)判断多选 foreach (var item in (Array)selection) { selectionItems.Add(item.ToString()); } } var name = prop.Name; string title = null; string description = null; var isRequired = prop.GetCustomAttribute <RequiredAttribute>() != null; var descriptionAttr = prop.GetCustomAttribute <DescriptionAttribute>(); if (descriptionAttr != null && descriptionAttr.Description != null) { var descriptionAttrArr = descriptionAttr.Description.Split(new[] { "||" }, StringSplitOptions.RemoveEmptyEntries); title = descriptionAttrArr[0]; if (descriptionAttrArr.Length > 1) { description = descriptionAttrArr[1]; } } var systemType = prop.PropertyType.Name; yield return(new FunctionParammeterInfo(name, title, description, isRequired, systemType, parammeterType, selectionItems?.ToArray())); } }