Example #1
0
 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;
 }
Example #2
0
        /// <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()));
            }
        }