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)); }
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 UiReqMethod(UIReqDelegate theDelegate, UiReqPara[] parameters) { TheDelegate = theDelegate; Parameters = parameters; ParameterMap = parameters.ToDictionary(p => p.Name); }