PortType Class
Represents a named set of abstract operations and the corresponding abstract messages. This class cannot be inherited.
For a list of all members of this type, see PortType Members.
System.Object
System.Web.Services.Description.DocumentableItem
System.Web.Services.Description.PortType
[Visual Basic] NotInheritable Public Class PortType Inherits DocumentableItem [C#] public sealed class PortType : DocumentableItem [C++] public __gc __sealed class PortType : public DocumentableItem [JScript] public class PortType extends DocumentableItem
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Remarks
The PortType class corresponds to the Web Services Description Language (WSDL) <portType> element enclosed by the <definitions> root element. For more information about WSDL, see the specification at http://www.w3.org/TR/wsdl/.
Example
[Visual Basic] Imports System Imports System.Web.Services.Description Imports System.Xml Imports Microsoft.VisualBasic Class MyPortTypeClass Public Shared Sub Main() Try Dim myPortTypeCollection As PortTypeCollection Dim myServiceDescription As ServiceDescription = _ ServiceDescription.Read("MathService_vb.wsdl") myPortTypeCollection = myServiceDescription.PortTypes Dim noOfPortTypes As Integer = _ myServiceDescription.PortTypes.Count Console.WriteLine(ControlChars.Newline & _ "Total number of PortTypes : " & noOfPortTypes.ToString()) Dim myPortType As PortType = _ myPortTypeCollection("MathServiceSoap") myPortTypeCollection.Remove(myPortType) ' Create a new PortType. Dim myNewPortType As New PortType() myNewPortType.Name = "MathServiceSoap" Dim myOperationCollection As OperationCollection = _ myServiceDescription.PortTypes(0).Operations Dim i As Integer For i = 0 To myOperationCollection.Count - 1 Dim inputmsg As String = _ myOperationCollection(i).Name & "SoapIn" Dim outputmsg As String = _ myOperationCollection(i).Name & "SoapOut" Console.WriteLine("Operation = " & myOperationCollection(i).Name) myNewPortType.Operations.Add( _ CreateOperation(myOperationCollection(i).Name, inputmsg, _ outputmsg, myServiceDescription.TargetNamespace)) Next i ' Add the PortType to the collection. myPortTypeCollection.Add(myNewPortType) noOfPortTypes = myServiceDescription.PortTypes.Count Console.WriteLine(ControlChars.Newline & _ "Total Number of PortTypes : " & noOfPortTypes.ToString()) myServiceDescription.Write("MathService_New.wsdl") Catch e As Exception Console.WriteLine("Exception: " & e.Message) End Try End Sub 'Main Public Shared Function CreateOperation(operationName As String, _ inputMessage As String, outputMessage As String, _ targetNamespace As String) As Operation Dim myOperation As New Operation() myOperation.Name = operationName Dim input As OperationMessage = _ CType(New OperationInput(), OperationMessage) input.Message = New XmlQualifiedName(inputMessage, targetNamespace) Dim output As OperationMessage = _ CType(New OperationOutput(), OperationMessage) output.Message = New XmlQualifiedName(outputMessage, targetNamespace) myOperation.Messages.Add(input) myOperation.Messages.Add(output) Return myOperation End Function 'CreateOperation End Class 'MyPortTypeClass [C#] using System; using System.Web.Services.Description; using System.Xml; class MyPortTypeClass { public static void Main() { try { PortTypeCollection myPortTypeCollection; ServiceDescription myServiceDescription = ServiceDescription.Read("MathService_CS.wsdl"); myPortTypeCollection = myServiceDescription.PortTypes; int noOfPortTypes = myServiceDescription.PortTypes.Count; Console.WriteLine("\nTotal number of PortTypes : " + noOfPortTypes); PortType myPortType = myPortTypeCollection["MathServiceSoap"]; myPortTypeCollection.Remove(myPortType); // Create a new PortType. PortType myNewPortType = new PortType(); myNewPortType.Name = "MathServiceSoap"; OperationCollection myOperationCollection = myServiceDescription.PortTypes[0].Operations; for(int i=0;i<myOperationCollection.Count;i++) { string inputmsg = myOperationCollection[i].Name + "SoapIn"; string outputmsg = myOperationCollection[i].Name + "SoapOut"; Console.WriteLine("Operation = " + myOperationCollection[i].Name); myNewPortType.Operations.Add( CreateOperation(myOperationCollection[i].Name, inputmsg, outputmsg,myServiceDescription.TargetNamespace)); } // Add the PortType to the collection. myPortTypeCollection.Add(myNewPortType); noOfPortTypes = myServiceDescription.PortTypes.Count; Console.WriteLine("\nTotal Number of PortTypes : " + noOfPortTypes); myServiceDescription.Write("MathService_New.wsdl"); } catch(Exception e) { Console.WriteLine("Exception: " + e.Message); } } public static Operation CreateOperation(string operationName, string inputMessage, string outputMessage, string targetNamespace) { Operation myOperation = new Operation(); myOperation.Name = operationName; OperationMessage input = (OperationMessage) new OperationInput(); input.Message = new XmlQualifiedName(inputMessage, targetNamespace); OperationMessage output = (OperationMessage) new OperationOutput(); output.Message = new XmlQualifiedName(outputMessage, targetNamespace); myOperation.Messages.Add(input); myOperation.Messages.Add(output); return myOperation; } } [C++] #using <mscorlib.dll> #using <System.Xml.dll> #using <System.Web.Services.dll> #using <System.dll> using namespace System; using namespace System::Web::Services::Description; using namespace System::Xml; Operation* CreateOperation(String* operationName, String* inputMessage, String* outputMessage, String* targetNamespace) { Operation* myOperation = new Operation(); myOperation->Name = operationName; OperationMessage* input = dynamic_cast<OperationMessage*> (new OperationInput()); input->Message = new XmlQualifiedName(inputMessage, targetNamespace); OperationMessage* output = dynamic_cast<OperationMessage*> (new OperationOutput()); output->Message = new XmlQualifiedName(outputMessage, targetNamespace); myOperation->Messages->Add(input); myOperation->Messages->Add(output); return myOperation; } int main() { try { PortTypeCollection* myPortTypeCollection; ServiceDescription* myServiceDescription = ServiceDescription::Read(S"MathService_CS.wsdl"); myPortTypeCollection = myServiceDescription->PortTypes; int noOfPortTypes = myServiceDescription->PortTypes->Count; Console::WriteLine(S"\nTotal number of PortTypes : {0}", __box(noOfPortTypes)); PortType* myPortType = myPortTypeCollection->Item[S"MathServiceSoap"]; myPortTypeCollection->Remove(myPortType); // Create a new PortType. PortType* myNewPortType = new PortType(); myNewPortType->Name = S"MathServiceSoap"; OperationCollection* myOperationCollection = myServiceDescription->PortTypes->Item[0]->Operations; for(int i=0;i<myOperationCollection->Count;i++) { String* inputmsg = String::Concat( myOperationCollection->Item[i]->Name, S"SoapIn" ); String* outputmsg = String::Concat( myOperationCollection->Item[i]->Name, S"SoapOut" ); Console::WriteLine(S"Operation = {0}", myOperationCollection->Item[i]->Name); myNewPortType->Operations->Add( CreateOperation(myOperationCollection->Item[i]->Name, inputmsg, outputmsg,myServiceDescription->TargetNamespace)); } // Add the PortType to the collection. myPortTypeCollection->Add(myNewPortType); noOfPortTypes = myServiceDescription->PortTypes->Count; Console::WriteLine(S"\nTotal Number of PortTypes : {0}", __box(noOfPortTypes)); myServiceDescription->Write(S"MathService_New.wsdl"); } catch(Exception* e) { Console::WriteLine(S"Exception: {0}", e->Message); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Namespace: System.Web.Services.Description
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
Assembly: System.Web.Services (in System.Web.Services.dll)
See Also
PortType Members | System.Web.Services.Description Namespace