Exemplo n.º 1
0
        private object[] LoadParameterValuesForServiceMethod(RequestMessage message, MethodInfo serviceMethod)
        {
            ParameterInfo[] parameters = serviceMethod.GetParameters();
             object[] result = new object[parameters.Length];

             for (int idx = 0; idx < parameters.Length; idx++)
             {
            result[idx] = message.MessageArgs[idx].Argument;
             }

             return result;
        }
Exemplo n.º 2
0
        private MethodInfo ExtractSpecifiedMethodFromServiceInstance(object service, RequestMessage message)
        {
            Type[] types = new Type[message.MessageArgs.Length];
             for (int idx = 0; idx < types.Length; idx++)
             {
            Type argType = Type.GetType(message.MessageArgs[idx].ArgumentType);
            types[idx] = argType;
             }

             return (types.Length > 0) ?
            service.GetType().GetMethod(message.MethodKey, types) :
            service.GetType().GetMethod(message.MethodKey);
        }
Exemplo n.º 3
0
        public static ServiceRequest GetServiceRequest()
        {
            RequestMessage request = new RequestMessage();
             MessageArgument arg = new MessageArgument();
             arg.ArgumentType = "System.String";
             arg.Argument = "stub";
             request.MessageArgs = new MessageArgument[1]{arg};

             byte[] content;
             using (IBinaryMessageSerializer serializer =
            MessageSerializerFactory.CreateBinarySerializer(typeof(RequestMessage)))
             {
            content = serializer.Serialize(request);
             }

             ServiceRequest result = new ServiceRequest(content);
             result.Message = new RequestMessage();
             result.Message.ServiceKey = typeof (FakeProxy).Name;
             result.Message.MethodKey = "ProxyMethod";
             result.Message.MessageArgs = request.MessageArgs;
             result.Message.SessionTicket = Guid.NewGuid();

             return result;
        }
Exemplo n.º 4
0
        public void Process()
        {
            RequestMessage request = new RequestMessage();

             IInvocation invocation = _channelRequest.Invocation;
             object[] arguments = invocation.Arguments;

             request.ServiceKey = _channelRequest.ServiceName;
             request.MethodKey = invocation.Method.Name;

             request.MessageArgs = new MessageArgument[arguments.Length];

             for (int idx = 0; idx < arguments.Length; idx++)
             {
            Type argumentType = arguments[idx].GetType();

            MessageArgument arg = new MessageArgument();
            arg.ArgumentType = argumentType.AssemblyQualifiedName;
            arg.Argument = arguments[idx];
            request.MessageArgs[idx] = arg;
             }

             _channelRequest.Message = request;
        }