/// <summary> /// 从类型上获取内置表达式函数集合 /// </summary> /// <param name="type"></param> /// <returns></returns> public static BuiltInFunctionInfoCollection BuildBuiltInFunctionsInfo(Type type) { type.NullCheck("type"); MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); BuiltInFunctionInfoCollection result = new BuiltInFunctionInfoCollection(); foreach (MethodInfo method in methods) { BuiltInFunctionAttribute attr = AttributeHelper.GetCustomAttribute <BuiltInFunctionAttribute>(method); if (attr != null) { if (attr.FunctionName.IsNullOrEmpty()) { attr.FunctionName = method.Name; } if (result.Contains(attr.FunctionName) == false) { result.Add(new BuiltInFunctionInfo(attr, method)); } } } return(result); }
/// <summary> /// 构造方法 /// </summary> internal BuiltInFunctionInfo(BuiltInFunctionAttribute attribute, MethodInfo methodInfo) { attribute.NullCheck("attribute"); methodInfo.NullCheck("methodInfo"); this.FunctionName = attribute.FunctionName; this.Description = attribute.Description; this.MethodInfo = methodInfo; }