War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
WsdlContractConversionContext-Klasse
Collapse the table of content
Expand the table of content

WsdlContractConversionContext-Klasse

Aktualisiert: November 2007

Dies wird an benutzerdefinierte WSDL-Export- und Importprogramme übergeben, um die Anpassung der Metadatenexport- und Importprozesse für einen Vertrag zu ermöglichen.

Namespace:  System.ServiceModel.Description
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public class WsdlContractConversionContext
public class WsdlContractConversionContext
public class WsdlContractConversionContext

Verwenden Sie das WsdlContractConversionContext-Objekt zum Überprüfen und Ändern von Elementen, die in oder von WSDL konvertiert werden sollen.

Beim Exportieren von Metadaten wird ein WsdlContractConversionContext-Objekt an die ExportContract-Methode und die ExportEndpoint-Methode übergeben. Verwenden Sie die verschiedenen Methoden und Eigenschaften, um Metadatenobjekte zu erhalten, die Sie zum Überprüfen und Ändern des veröffentlichten WSDL verwenden können.

Beim Importieren von Metadaten wird ein WsdlContractConversionContext-Objekt an die ImportContract-Methode und die ImportEndpoint-Methode übergeben. Verwenden Sie die verschiedenen Methoden und Eigenschaften, um Metadatenobjekte zu erhalten, die Sie zum Überprüfen und Ändern der importierten Metadaten verwenden können.

Im folgenden Codebeispiel wird die Verwendung des WsdlContractConversionContext zum Hinzufügen benutzerdefinierter WSDL-Anmerkungen zu exportierten Metadaten unter Verwendung der WsdlPortType und Contract-Eigenschaften gezeigt.

    public void ExportContract(WsdlExporter exporter, WsdlContractConversionContext context)
		{


...


      Console.WriteLine("Inside ExportContract");
			if (context.Contract != null)
			{
        // Inside this block it is the contract-level comment attribute.
        // This.Text returns the string for the contract attribute.
        // Set the doc element; if this isn't done first, there is no XmlElement in the 
        // DocumentElement property.
        context.WsdlPortType.Documentation = string.Empty; 
        // Contract comments.
        XmlDocument owner = context.WsdlPortType.DocumentationElement.OwnerDocument;
        XmlElement summaryElement = Formatter.CreateSummaryElement(owner, this.Text); 
        context.WsdlPortType.DocumentationElement.AppendChild(summaryElement);

        foreach (OperationDescription op in context.Contract.Operations)
        {
          Operation operation = context.GetOperation(op);
          object[] opAttrs = op.SyncMethod.GetCustomAttributes(typeof(WsdlDocumentationAttribute), false);
          if (opAttrs.Length == 1)
          {
            string opComment = ((WsdlDocumentationAttribute)opAttrs[0]).Text;

            // This.Text returns the string for the operation-level attributes.
            // Set the doc element; if this isn't done first, there is no XmlElement in the 
            // DocumentElement property.
            operation.Documentation = String.Empty;

            // Operation C# triple comments.
            XmlDocument opOwner = operation.DocumentationElement.OwnerDocument;
            XmlElement newSummaryElement = Formatter.CreateSummaryElement(opOwner, opComment);
            operation.DocumentationElement.AppendChild(newSummaryElement);

            // Get returns information
            ParameterInfo returnValue = op.SyncMethod.ReturnParameter;
            object[] returnAttrs = returnValue.GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
            if (returnAttrs.Length == 1)
            {
              // <returns>text.</returns>
              XmlElement returnsElement = 
                Formatter.CreateReturnsElement(
                  opOwner,
                  ((WsdlParameterDocumentationAttribute)returnAttrs[0]).ParamComment
                );
              operation.DocumentationElement.AppendChild(returnsElement);
            }

            // Get parameter information.
            ParameterInfo[] args = op.SyncMethod.GetParameters();
            for (int i = 0; i < args.Length; i++)
            {
              object[] docAttrs 
                = args[i].GetCustomAttributes(typeof(WsdlParameterDocumentationAttribute), false);
              if (docAttrs.Length != 0)
              {
                // <param name="Int1">Text.</param>
                XmlElement newParamElement = opOwner.CreateElement("param");
                XmlAttribute paramName = opOwner.CreateAttribute("name");
                paramName.Value = args[i].Name;
                newParamElement.InnerText 
                  = ((WsdlParameterDocumentationAttribute)docAttrs[0]).ParamComment;
                newParamElement.Attributes.Append(paramName);
                operation.DocumentationElement.AppendChild(newParamElement);
              }
            }
          }
        }
      }


System.Object
  System.ServiceModel.Description.WsdlContractConversionContext

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft