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