private static SCPropertyAccessorBase GetPropertyAccessor(string funcName, SCConditionCalculatingContext context) { SCPropertyAccessorBase result = null; SchemaNameAndPropertyName snpn = SchemaNameAndPropertyName.FromFullName(funcName); snpn.CheckIsValid(); if (context.PropertyAccessors.TryGetValue(snpn, out result) == false) { result = new DefaultUsersPropertyAccessor(snpn); context.PropertyAccessors.Add(snpn, result); } return(result); }
private static object CalculateUserFunction(string funcName, ParamObjectCollection arrParams, object callerContext) { SCConditionCalculatingContext context = (SCConditionCalculatingContext)callerContext; object result = null; if (SCBuiltInFunctionsCalculator.Instance.IsFunction(funcName)) { //如果是内置函数,则返回内置函数的结果 result = SCBuiltInFunctionsCalculator.Instance.Calculate(funcName, arrParams, context); } else { //根据函数名称,获取属性访问器 SCPropertyAccessorBase accessor = GetPropertyAccessor(funcName, context); result = accessor.GetValue(context, arrParams); } return(result); }