예제 #1
0
            private static CustomAttributeBuilder CreateServiceContractAttribute(string name, string ns, string configurationName,
                                                                                 Type callbackContract, ProtectionLevel protectionLevel)
            {
                ReflectionUtils.CustomAttributeBuilderBuilder scbb =
                    new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(int));//ServiceContractAttribute));
                if (StringUtils.HasText(name))
                {
                    scbb.AddPropertyValue("Name", name);
                }
                if (StringUtils.HasText(ns))
                {
                    scbb.AddPropertyValue("Namespace", ns);
                }
                if (StringUtils.HasText(configurationName))
                {
                    scbb.AddPropertyValue("ConfigurationName", configurationName);
                }
                if (callbackContract != null)
                {
                    scbb.AddPropertyValue("CallbackContract", callbackContract);
                }
                if (protectionLevel != ProtectionLevel.None)
                {
                    scbb.AddPropertyValue("ProtectionLevel", protectionLevel);
                }

                return(scbb.Build());
            }
            /// <summary>
            /// Creates a <see cref="SoapDocumentMethodAttribute"/> or a <see cref="SoapRpcMethodAttribute"/>
            /// that should be applied to proxy method.
            /// </summary>
            private static CustomAttributeBuilder CreateSoapMethodAttribute(Operation operation,
                                                                            OperationBinding operationBinding, SoapOperationBinding soapOperationBinding,
                                                                            XmlMembersMapping inputMembersMapping, XmlMembersMapping outputMembersMapping)
            {
                ReflectionUtils.CustomAttributeBuilderBuilder cabb;

                string inputMembersMappingElementName = inputMembersMapping.ElementName;
                string inputMembersMappingNamespace   = inputMembersMapping.Namespace;

                if (soapOperationBinding.Style == SoapBindingStyle.Rpc)
                {
                    cabb = new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(SoapRpcMethodAttribute));
                }
                else
                {
                    cabb = new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(SoapDocumentMethodAttribute));
                    cabb.AddPropertyValue("ParameterStyle", SoapParameterStyle.Wrapped);
                }

                cabb.AddContructorArgument(soapOperationBinding.SoapAction);
                cabb.AddPropertyValue("Use", SoapBindingUse.Literal);

                if (inputMembersMappingElementName.Length > 0 &&
                    inputMembersMappingElementName != operation.Name)
                {
                    cabb.AddPropertyValue("RequestElementName", inputMembersMappingElementName);
                }

                if (inputMembersMappingNamespace != null)
                {
                    cabb.AddPropertyValue("RequestNamespace", inputMembersMappingNamespace);
                }

                if (outputMembersMapping == null)
                {
                    cabb.AddPropertyValue("OneWay", true);
                }
                else
                {
                    string outputMembersMappingElementName = outputMembersMapping.ElementName;
                    string outputMembersMappingNamespace   = outputMembersMapping.Namespace;

                    if (outputMembersMappingElementName.Length > 0 &&
                        outputMembersMappingElementName != (operation.Name + "Response"))
                    {
                        cabb.AddPropertyValue("ResponseElementName", outputMembersMappingElementName);
                    }

                    if (outputMembersMappingNamespace != null)
                    {
                        cabb.AddPropertyValue("ResponseNamespace", outputMembersMappingNamespace);
                    }
                }

                return(cabb.Build());
            }
 private static CustomAttributeBuilder CreateWebServiceBindingAttribute(WsiProfiles wsiProfile)
 {
     ReflectionUtils.CustomAttributeBuilderBuilder cabb =
         new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(WebServiceBindingAttribute));
     if (wsiProfile == WsiProfiles.BasicProfile1_1)
     {
         cabb.AddPropertyValue("ConformsTo", wsiProfile);
     }
     return(cabb.Build());
 }
예제 #4
0
            /// <summary>
            /// Creates a <see cref="WebServiceBindingAttribute"/> that should be applied to proxy type.
            /// </summary>
            private CustomAttributeBuilder CreateWebServiceBindingAttribute(Binding wsBinding)
            {
                ReflectionUtils.CustomAttributeBuilderBuilder cabb =
                    new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(WebServiceBindingAttribute));

                cabb.AddContructorArgument(this.wsBinding.Name);
                cabb.AddPropertyValue("Namespace", this.wsBinding.ServiceDescription.TargetNamespace);

                return(cabb.Build());
            }
 private static CustomAttributeBuilder CreateWebServiceAttribute(string description, string name, string ns)
 {
     ReflectionUtils.CustomAttributeBuilderBuilder cabb =
         new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(WebServiceAttribute));
     if (StringUtils.HasText(description))
     {
         cabb.AddPropertyValue("Description", description);
     }
     if (StringUtils.HasText(name))
     {
         cabb.AddPropertyValue("Name", name);
     }
     if (StringUtils.HasText(ns))
     {
         cabb.AddPropertyValue("Namespace", ns);
     }
     return(cabb.Build());
 }
예제 #6
0
            protected override IList GetMethodReturnTypeAttributes(MethodInfo method)
            {
                IList attrs = base.GetMethodReturnTypeAttributes(method);

                // Add the XmlElementAttribute if needed
                if (operation.Messages.Output != null)
                {
                    if (method.ReturnType != typeof(void))
                    {
                        if (outputMembersMapping.Count > 0)
                        {
                            XmlMemberMapping outMemberMapping = outputMembersMapping[0];
                            bool             useMemberName    = (outMemberMapping.MemberName != operation.Name + "Result");
                            bool             useNamespace     = outMemberMapping.Namespace != outputMembersMapping.Namespace;
                            bool             useTypeNamespace = outMemberMapping.TypeNamespace != XmlSchema.Namespace &&
                                                                outMemberMapping.TypeNamespace != outputMembersMapping.Namespace;
                            if (useMemberName || useNamespace || useTypeNamespace)
                            {
                                if (outMemberMapping.TypeName.StartsWith("ArrayOf", StringComparison.Ordinal))
                                {
                                    if (useMemberName || useNamespace)
                                    {
                                        ReflectionUtils.CustomAttributeBuilderBuilder cabb =
                                            new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(XmlArrayAttribute));
                                        if (useMemberName)
                                        {
                                            cabb.AddPropertyValue("ElementName", outMemberMapping.MemberName);
                                        }
                                        if (useNamespace)
                                        {
                                            cabb.AddPropertyValue("Namespace", outMemberMapping.Namespace);
                                        }
                                        attrs.Add(cabb.Build());
                                    }
                                    if (useTypeNamespace)
                                    {
                                        ReflectionUtils.CustomAttributeBuilderBuilder cabb =
                                            new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(XmlArrayItemAttribute));
                                        cabb.AddPropertyValue("Namespace", outMemberMapping.TypeNamespace);
                                        attrs.Add(cabb.Build());
                                    }
                                }
                                else
                                {
                                    if (useMemberName || useNamespace)
                                    {
                                        ReflectionUtils.CustomAttributeBuilderBuilder cabb =
                                            new ReflectionUtils.CustomAttributeBuilderBuilder(typeof(XmlElementAttribute));
                                        if (useMemberName)
                                        {
                                            cabb.AddPropertyValue("ElementName", outMemberMapping.MemberName);
                                        }
                                        if (useNamespace)
                                        {
                                            cabb.AddPropertyValue("Namespace", outMemberMapping.Namespace);
                                        }
                                        attrs.Add(cabb.Build());
                                    }
                                }
                            }
                        }
                    }
                }

                return(attrs);
            }