public DelegateSubscription(Delegate handler, SubscriptionOptions options) { Check.NotNull(handler, nameof(handler)); Check.NotNull(options, nameof(options)); _method = new SubscribedMethod(_ => handler.Target, handler.Method, options); }
GetMessageArgumentResolver(SubscribedMethod method) { var parameterInfo = method.Parameters[0]; var resolver = GetMessageArgumentResolver(parameterInfo, method.MethodInfo); return(resolver, parameterInfo.ParameterType, resolver.GetMessageType(parameterInfo.ParameterType)); }
public object[] GetAdditionalParameterValues(SubscribedMethod methodInfo) => methodInfo.Parameters .Skip(1) .Select(parameterInfo => GetAdditionalArgumentResolver(parameterInfo, methodInfo.MethodInfo) .GetValue(parameterInfo.ParameterType)) .ToArray();
public DelegateSubscription(Delegate handler, SubscriptionOptions options) { if (handler == null) { throw new ArgumentNullException(nameof(handler)); } _method = new SubscribedMethod(handler.Target, new SubscribedMethodInfo(handler.Method, options?.Exclusive, options?.Parallel, options?.MaxDegreeOfParallelism)); }
public IEnumerable <IAdditionalArgumentResolver> GetAdditionalArgumentsResolvers(SubscribedMethod method) => method.Parameters.Skip(1).Select( parameterInfo => GetAdditionalArgumentResolver(parameterInfo, method.MethodInfo));
public (IMessageArgumentResolver resolver, Type messageType) GetMessageArgumentResolver(SubscribedMethod methodInfo) { var resolver = GetMessageArgumentResolver(methodInfo.Parameters[0], methodInfo.MethodInfo); return(resolver, resolver.GetMessageType(methodInfo.Parameters[0].ParameterType)); }