Пример #1
0
        public static BusHandler BuildBusHandler(object plugin, RouteMetadata route)
        {
            var method = route.Method;

            if (method.ReturnType != typeof(Task))
            {
                throw new InvalidOperationException("Return type of Bus method should be Task");
            }

            var builder = new RouteHandlerBuilder();

            foreach (var param in method.GetParameters())
            {
                builder.AddArgument(param);
            }

            return(builder.Build <BusHandler>(plugin, method));
        }
Пример #2
0
        public static RpcHandler BuildRpcHandler(object plugin, RouteMetadata route)
        {
            var method = route.Method;

            if (!method.ReturnType.IsConstructedGenericType || method.ReturnType.GetGenericTypeDefinition() != typeof(Task <>))
            {
                throw new InvalidOperationException("Return type of RPC method should be Task<T>");
            }

            var builder = new RouteHandlerBuilder();

            foreach (var param in method.GetParameters())
            {
                builder.AddArgument(param);
            }

            var returnType = method.ReturnType.GetGenericArguments()[0];

            builder.SetReturnType(returnType);

            return(builder.Build <RpcHandler>(plugin, method));
        }