/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="base"></param> /// <param name="property"></param> /// <returns></returns> public override bool IsReadOnly(ELContext context, object @base, object property) { return(true); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="arg"></param> /// <returns></returns> public override Type GetCommonPropertyType(ELContext context, object arg) { return(typeof(object)); }
public override bool isReadOnly(ELContext context, object @base, object property) { return(this.readOnly); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="arg1"></param> /// <param name="arg2"></param> /// <returns></returns> public override Type GetType(ELContext context, object arg1, object arg2) { return(typeof(object)); }
private object GetValue(ELContext context, IVariableScope variableScope) { string expstr = ExpressionString; if ((VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is IExecutionEntity) || (VariableScopeElResolver.TASK_KEY.Equals(expstr) && variableScope is ITaskEntity)) { context.IsPropertyResolved = true; return(variableScope); } else if (VariableScopeElResolver.EXECUTION_KEY.Equals(expstr) && variableScope is ITaskEntity) { context.IsPropertyResolved = true; return(((ITaskEntity)variableScope).Execution); } else if (VariableScopeElResolver.LOGGED_IN_USER_KEY.Equals(expstr)) { context.IsPropertyResolved = true; return(Authentication.AuthenticatedUser.Id); } List <string> sb = new List <string>(); if (EXPR_PATTERN.IsMatch(expstr)) { EXPR_PATTERN.Replace(expstr, (m) => { if (sb.Count == 0 && m.Index > 0) { sb.Add($"'{expstr.Substring(0, m.Index)}'"); } var r = m.Result("$1"); sb.Add(r); var nm = m.NextMatch(); if (nm.Success) { sb.Add($"'{expstr.Substring(m.Index + m.Length, nm.Index - (m.Index + m.Length))}'"); } else { if (expstr.Length > (m.Index + m.Length)) { sb.Add($"'{expstr.Substring(m.Index, expstr.Length - m.Index)}'"); } } return(r); }); } else { return(expstr); } expstr = string.Join("+", sb); if (variableScope is IExecutionEntity execution) { ExpandoObject contextObject = new ExpandoObject(); foreach (string key in execution.Variables.Keys) { var value = execution.Variables[key]; object obj = ToObject(value); (contextObject as IDictionary <string, object>).Add(key, obj); } return(Sys.Expressions.ExpressionManager.GetValue(contextObject, expstr, execution.Variables)); } // property resolution (eg. bean.value) will be done by the // BeanElResolver (part of the CompositeElResolver) // It will use the bean resolved in this resolver as base. return(null); }
public override IEnumerator <FeatureDescriptor> getFeatureDescriptors(ELContext context, object @base) { return(null); }
/// <summary> /// /// </summary> /// <param name="context"></param> /// <param name="base"></param> /// <param name="method"></param> /// <param name="paramTypes"></param> /// <param name="params"></param> /// <returns></returns> public virtual object Invoke(ELContext context, object @base, object method, Type[] paramTypes, object[] @params) { return(null); }
/// <summary> /// If the base object is not null, returns the most general type that this resolver accepts for /// the property argument. Otherwise, returns null. Assuming the base is not null, this method /// will always return Object.class. This is because any object is accepted as a key and is /// coerced into a string. /// </summary> /// <param name="context"> /// The context of this evaluation. </param> /// <param name="base"> /// The bean to analyze. </param> /// <returns> null if base is null; otherwise Object.class. </returns> public override Type GetCommonPropertyType(ELContext context, object @base) { return(IsResolvable(@base) ? typeof(object) : null); }
/// <summary> /// /// </summary> /// <param name="var1"></param> /// <param name="var2"></param> /// <param name="var3"></param> /// <param name="var4"></param> public abstract void SetValue(ELContext var1, object var2, object var3, object var4);
/// <summary> /// /// </summary> /// <param name="var1"></param> /// <param name="base"></param> /// <param name="var3"></param> /// <returns></returns> public abstract bool IsReadOnly(ELContext var1, object @base, object var3);
/// <summary> /// /// </summary> /// <param name="var1"></param> /// <param name="base"></param> /// <param name="property"></param> /// <returns></returns> public abstract object GetValue(ELContext var1, object @base, object property);
/// <summary> /// /// </summary> /// <param name="var1"></param> /// <param name="base"></param> /// <param name="var3"></param> /// <returns></returns> public abstract Type GetType(ELContext var1, object @base, object var3);
/// <summary> /// /// </summary> /// <param name="var1"></param> /// <param name="var2"></param> /// <returns></returns> public abstract Type GetCommonPropertyType(ELContext var1, object var2);