internal void OnInit(Connection connection, WidgetContext context, Widget widget) { ID = widget.ID; Connection = connection; Context = context; object objConfig = widget.Config.ToObject(ConfigType) !; widget.Config = StdJson.ObjectToJObject(objConfig); SetConfig(objConfig); Type type = GetType(); string prefix = RequestMethodNamePrefix; int N = prefix.Length; MethodInfo[] methods = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance) .Where(m => m.Name.StartsWith(prefix)) .ToArray(); foreach (MethodInfo m in methods) { ParameterInfo[] parameters = m.GetParameters(); UIReqDelegate theDelegate = (object?[] args) => { return((Task <ReqResult>)m.Invoke(this, args) !); }; UiReqPara[] uiReqParameters = parameters.Select(MakeParameter).ToArray(); string key = m.Name.Substring(N); mapUiReqMethods[key] = new UiReqMethod(theDelegate, uiReqParameters); } }
public virtual Task OnInit(Connection connection, ViewContext context, DataValue config) { Connection = connection; Context = context; Config = config; Type type = GetType(); string prefix = RequestMethodNamePrefix; int N = prefix.Length; MethodInfo[] methods = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance) .Where(m => m.Name.StartsWith(prefix)) .ToArray(); foreach (MethodInfo m in methods) { ParameterInfo[] parameters = m.GetParameters(); UIReqDelegate theDelegate = (object?[] args) => { return((Task <ReqResult>)m.Invoke(this, args) !); }; UiReqPara[] uiReqParameters = parameters.Select(MakeParameter).ToArray(); string key = m.Name.Substring(N); mapUiReqMethods[key] = new UiReqMethod(theDelegate, uiReqParameters); } return(Task.FromResult(true)); }
public virtual async Task <ReqResult> OnUiRequestAsync(string command, JObject parameters) { if (mapUiReqMethods.ContainsKey(command)) { UiReqMethod method = mapUiReqMethods[command]; method.ResetValues(); foreach (JProperty p in parameters.Properties()) { if (method.ParameterMap.ContainsKey(p.Name)) { UiReqPara para = method.ParameterMap[p.Name]; para.Value = p.Value.ToObject(para.Type); } } object?[] paramValues = method.Parameters.Select(p => p.Value).ToArray(); return(await method.TheDelegate(paramValues)); } return(ReqResult.Bad("Unknown command: " + command)); }