Ejemplo n.º 1
0
        public static Action <TProtocol> CreateDelegate <TProtocol>(object actor, ExpressionSerializationInfo info)
        {
            var mi = actor.GetType().GetMethod(info.MethodName, info.ArgumentTypes !);

            if (mi != null)
            {
                var dlg = CreateDelegate(mi, actor);
                Action <TProtocol> consumer = a => dlg.DynamicInvoke(info.ArgumentValues);
                return(consumer);
            }

            throw new InvalidOperationException($"Cannot Create a delegate method for MethodName={info.MethodName}");
        }
Ejemplo n.º 2
0
        public static Action <TProtocol, TParam> CreateDelegate <TProtocol, TParam>(object actor, ExpressionSerializationInfo info)
        {
            var mi = actor.GetType().GetMethod(info.MethodName, info.FlattenTypes());

            if (mi != null)
            {
                var dlg  = CreateDelegate(mi, actor);
                var args = info.ArgumentValues.Where(a => !(a is ParameterExpressionNode)).ToArray();
                Action <TProtocol, TParam> consumer = (a, tparam) => dlg.DynamicInvoke(args.Concat(new object?[] { tparam }).ToArray());
                return(consumer);
            }

            throw new InvalidOperationException($"Cannot Create a delegate method for MethodName={info.MethodName}");
        }