PortType クラス

抽象演算および対応する抽象メッセージの名前付きセットを表します。このクラスは継承できません。

この型のすべてのメンバの一覧については、PortType メンバ を参照してください。

System.Object
   System.Web.Services.Description.DocumentableItem
      System.Web.Services.Description.PortType

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

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

PortType クラスは、 <definitions> ルート要素で囲まれた WSDL (Web Services Description Language) <portType> 要素に対応します。WSDL の詳細については、http://www.w3.org/TR/wsdl/ の仕様を参照してください。

使用例

 
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.Services.Description

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Web.Services (System.Web.Services.dll 内)

参照

PortType メンバ | System.Web.Services.Description 名前空間