public bool IsFunction(string funcName) { funcName.CheckStringIsNullOrEmpty("funcName"); BuiltInFunctionInfoCollection funcsInfo = BuiltInFunctionHelper.GetBuiltInFunctionsInfo(this.GetType()); return(funcsInfo.Contains(funcName)); }
public void EnumBuiltInFunctionInfoTest() { BuiltInFunctionInfoCollection funcsInfo = BuiltInFunctionHelper.GetBuiltInFunctionsInfo(typeof(BuiltInFuncWrapper)); funcsInfo.ForEach(f => Console.WriteLine(f.FunctionName)); Assert.IsTrue(funcsInfo.Contains("add")); Assert.IsTrue(funcsInfo.Contains("sub")); }
/// <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; }