Ejemplo n.º 1
0
        public bool IsFunction(string funcName)
        {
            funcName.CheckStringIsNullOrEmpty("funcName");

            BuiltInFunctionInfoCollection funcsInfo = BuiltInFunctionHelper.GetBuiltInFunctionsInfo(this.GetType());

            return(funcsInfo.Contains(funcName));
        }
Ejemplo n.º 2
0
        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;
		}