public void SerializationTest()
        {
            // Arrange.
            const string MethodName = "TestMethod";
            const string ParameterName = "testParameter";
            const string ParameterType = "TestType1";

            var serviceDescription = new WebServiceClientDescription();
            var method = new WebServiceMethodDescription(serviceDescription) { Name = MethodName };
            method.InputParameters.Add(new WebServiceMethodParameterDescription(method) { Name = ParameterName, TypeName = ParameterType });

            // Act.
            var element = method.GetXElement();
            var newMethod = WebServiceMethodDescription.CreateMethodDescription(serviceDescription, element);

            // Assert.
            Assert.AreEqual(MethodName, newMethod.Name);
            
            Assert.AreEqual(1, newMethod.InputParameters.Count);
            Assert.AreEqual(ParameterName, newMethod.InputParameters.ElementAt(0).Name);
            Assert.AreEqual(ParameterType, newMethod.InputParameters.ElementAt(0).TypeName);
        }
        /// <summary>
        /// Create a parameter description.
        /// </summary>
        /// <param name="declaringMethod">
        /// The declaring method.
        /// </param>
        /// <param name="element">
        /// The element.
        /// </param>
        /// <returns>
        /// The <see cref="WebServiceMethodParameterDescription"/>.
        /// </returns>
        public static WebServiceMethodParameterDescription CreateParameterDescription(WebServiceMethodDescription declaringMethod, XElement element)
        {
            ParseHelper.CheckRequiredElement(element, CnParameter);

            return new WebServiceMethodParameterDescription(declaringMethod)
                   {
                       Name = ParseHelper.ReadRequiredAttribute(element, CnName),
                       TypeName = ParseHelper.ReadRequiredAttribute(element, CnTypeName),
                       IsSoapHeader =
                           bool.Parse(
                               ParseHelper.ReadRequiredAttribute(element, CnIsSoapHeader))
                   };
        }
Esempio n. 3
0
        /// <summary>
        /// Gets the method parameter description.
        /// </summary>
        /// <param name="declaringMethod">The declaring method.</param>
        /// <param name="field">The field.</param>
        /// <returns>WebServiceMethodParameterDescription.</returns>
        private static WebServiceMethodParameterDescription GetMethodParameterDescription(WebServiceMethodDescription declaringMethod, FieldInfo field)
        {
            var parameterDescription = new WebServiceMethodParameterDescription(declaringMethod)
                                       {
                                           Name = field.Name,
                                           TypeName =
                                               field.FieldType.GetAssemblyQualifiedName(),
                                           IsSoapHeader = IsMessageHeader(field)
                                       };

            return parameterDescription;
        }
Esempio n. 4
0
        /// <summary>
        /// Gets the method description.
        /// </summary>
        /// <param name="declaringService">The declaring service.</param>
        /// <param name="method">The method.</param>
        /// <returns>WebServiceMethodDescription.</returns>
        private WebServiceMethodDescription GetMethodDescription(WebServiceClientDescription declaringService, MethodInfo method)
        {
            var requestType = GetRequestType(method);
            var methodDescription = new WebServiceMethodDescription(declaringService) { Name = method.Name };

            var requestFields = requestType.GetFields(BindingFlags.Instance | BindingFlags.Public);
            var resultFields = method.ReturnType.GetFields(BindingFlags.Instance | BindingFlags.Public);

            methodDescription.InputParameters.AddRange(
                requestFields.Where(IsMessageBodyMember).Select(p => GetMethodParameterDescription(methodDescription, p)));

            methodDescription.InputParameters.AddRange(
                requestFields.Where(IsMessageHeader).Select(h => GetMethodParameterDescription(methodDescription, h)));

            methodDescription.OutputParameters.AddRange(
                resultFields.Where(IsMessageBodyMember).Select(f => GetMethodParameterDescription(methodDescription, f)));

            methodDescription.OutputParameters.AddRange(
                resultFields.Where(IsMessageHeader).Select(f => GetMethodParameterDescription(methodDescription, f)));

            return methodDescription;
        }
        /// <summary>
        /// Creates a method description.
        /// </summary>
        /// <param name="declaringService">
        /// The declaring service.
        /// </param>
        /// <param name="element">
        /// The element.
        /// </param>
        /// <returns>
        /// The <see cref="WebServiceMethodDescription"/>.
        /// </returns>
        public static WebServiceMethodDescription CreateMethodDescription(WebServiceClientDescription declaringService, XElement element)
        {
            ParseHelper.CheckRequiredElement(element, CnMethod);

            var method = new WebServiceMethodDescription(declaringService) { Name = ParseHelper.ReadRequiredAttribute(element, CnName) };

            var parametersElement = element.Element(CnInputParameters);
            if (parametersElement != null)
            {
                method.InputParameters.AddRange(
                    parametersElement.Elements(WebServiceMethodParameterDescription.CnParameter)
                        .Select(x => WebServiceMethodParameterDescription.CreateParameterDescription(method, x)));
            }

            var outputParametersElement = element.Element(CnOutputParameters);
            if (outputParametersElement != null)
            {
                method.OutputParameters.AddRange(
                    outputParametersElement.Elements(WebServiceMethodParameterDescription.CnParameter)
                        .Select(x => WebServiceMethodParameterDescription.CreateParameterDescription(method, x)));
            }

            return method;
        }