XmlMessageFormatter コンストラクタ (Type[])
アセンブリ: System.Messaging (system.messaging.dll 内)



対象の型パラメータを使用するコンストラクタは、キューから読み取るときに最も頻繁に使用されます。書き込み時には、対象の型を指定する必要はありません。
この XmlMessageFormatter コンストラクタのオーバーロードは、targetTypes パラメータで渡された配列値を TargetTypes プロパティに設定します。このプロパティを設定すると、MessageQueue は、この XmlMessageFormatter インスタンスを使用して指定された型のオブジェクトが含まれているメッセージを読み取ることができます。
TargetTypeNames プロパティおよび TargetTypes プロパティの設定により、フォーマッタがメッセージの逆シリアル化時に一致させようとするスキーマが決まります。これにより、フォーマッタがメッセージ本文を解釈できます。
メッセージ本文でシリアル化されるインスタンスは、型配列で表されたスキーマの 1 つに従っている必要があります。Receive メソッドを使用してメッセージを読み取る場合は、識別されたスキーマに対応する型のオブジェクトがこのメソッドによって作成され、そこにメッセージ本文が読み込まれます。
キューから読み取るときに設定する必要があるのは、2 つのプロパティのうちの 1 つだけですが、両方を設定することもできます。型のセットとは、2 つのプロパティの型を結合したものです。どちらを使用するかは、アプリケーションによって異なります。メッセージ本文に、両方のプロパティの配列内のどの型ともスキーマが一致しない型が含まれている場合は、読み取り時に例外がスローされます。
TargetTypeNames ではなく TargetTypes を指定する場合は、読み取り時ではなくコンパイル時に型の存在を確認することで、エラーの可能性が抑制されます。TargetTypeNames では、すべてのエントリが完全に限定され、アセンブリ名が指定されている必要があります。さらに、複数のバージョンを同時に操作する場合は、対象の型名にバージョン番号も追加する必要があります。
TargetTypes を使用する場合は、次の C# コードで示される方法で、各オブジェクト (MyClass など) をリストに追加できます。


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


XmlMessageFormatter コンストラクタ (String[])
アセンブリ: System.Messaging (system.messaging.dll 内)



対象の型パラメータを使用するコンストラクタは、キューから読み取るときに最も頻繁に使用されます。書き込み時には、対象の型を指定する必要はありません。
この XmlMessageFormatter コンストラクタのオーバーロードは、targetTypeNames パラメータで渡された配列値を TargetTypeNames プロパティに設定します。このプロパティを設定すると、MessageQueue は、この XmlMessageFormatter インスタンスを使用して、指定された型のオブジェクトが含まれているメッセージを読み取ることができます。
TargetTypeNames プロパティおよび TargetTypes プロパティの設定により、フォーマッタがメッセージの逆シリアル化時に一致させようとするスキーマが決まります。これにより、フォーマッタがメッセージ本文を解釈できます。
メッセージ本文でシリアル化されるインスタンスは、型配列で表されたスキーマの 1 つに従っている必要があります。Receive メソッドを使用してメッセージを読み取る場合は、識別されたスキーマに対応する型のオブジェクトがこのメソッドによって作成され、そこにメッセージ本文が読み込まれます。
キューから読み取るときに設定する必要があるのは、2 つのプロパティのうちの 1 つだけですが、両方を設定することもできます。型のセットとは、2 つのプロパティの型を結合したものです。どちらを使用するかは、アプリケーションによって異なります。メッセージ本文に、両方のプロパティの配列内のどの型ともスキーマが一致しない型が含まれている場合は、読み取り時に例外がスローされます。

Imports System Imports System.Messaging Imports System.Drawing Imports System.IO ' The following example ' sends to a queue and receives from a queue. Public Class Order Public orderId As Integer Public orderTime As DateTime End Class 'Order ' Provides a container class for the example. Public Class MyNewQueue ' Provides an entry point into the application. ' ' This example sends and receives a message from ' a queue. Public Shared Sub Main() ' Create a new instance of the class. Dim myNewQueue As New MyNewQueue() ' Create a queue on the local computer. CreateQueue(".\myQueue") ' Send a message to a queue. myNewQueue.SendMessage() ' Receive a message from a queue. myNewQueue.ReceiveMessage() Return End Sub 'Main ' Creates a new queue. Public Shared Sub CreateQueue(queuePath As String) Try If Not MessageQueue.Exists(queuePath) Then MessageQueue.Create(queuePath) Else Console.WriteLine((queuePath + " already exists.")) End If Catch e As MessageQueueException Console.WriteLine(e.Message) End Try End Sub 'CreateQueue ' Sends an Order to a queue. Public Sub SendMessage() Try ' Create a new order and set values. Dim sentOrder As New Order() sentOrder.orderId = 3 sentOrder.orderTime = DateTime.Now ' Connect to a queue on the local computer. Dim myQueue As New MessageQueue(".\myQueue") ' Create the new order. Dim myMessage As New Message(sentOrder) ' Send the order to the queue. myQueue.Send(myMessage) Catch e As ArgumentException Console.WriteLine(e.Message) End Try Return End Sub 'SendMessage ' Receives a message containing an order. Public Sub ReceiveMessage() ' Connect to the a queue on the local computer. Dim myQueue As New MessageQueue(".\myQueue") ' Set the formatter to indicate body contains an Order. myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(Order)}) Try ' Receive and format the message. Dim myMessage As Message = myQueue.Receive() Dim myOrder As Order = CType(myMessage.Body, Order) ' Display message information. Console.WriteLine(("Order ID: " + myOrder.orderId.ToString())) Console.WriteLine(("Sent: " + myOrder.orderTime.ToString())) ' Handle invalid serialization format. Catch e As InvalidOperationException Console.WriteLine(e.Message) End Try ' Catch other exceptions as necessary. Return End Sub 'ReceiveMessage End Class 'MyNewQueue
using System; using System.Messaging; using System.Drawing; using System.IO; namespace MyProject { // The following example // sends to a queue and receives from a queue. public class Order { public int orderId; public DateTime orderTime; }; /// <summary> /// Provides a container class for the example. /// </summary> public class MyNewQueue { //************************************************** // Provides an entry point into the application. // // This example sends and receives a message from // a queue. //************************************************** public static void Main() { // Create a new instance of the class. MyNewQueue myNewQueue = new MyNewQueue(); // Create a queue on the local computer. CreateQueue(".\\myQueue"); // Send a message to a queue. myNewQueue.SendMessage(); // Receive a message from a queue. myNewQueue.ReceiveMessage(); return; } //************************************************** // Creates a new queue. //************************************************** public static void CreateQueue(string queuePath) { try { if(!MessageQueue.Exists(queuePath)) { MessageQueue.Create(queuePath); } else { Console.WriteLine(queuePath + " already exists."); } } catch (MessageQueueException e) { Console.WriteLine(e.Message); } } //************************************************** // Sends an Order to a queue. //************************************************** public void SendMessage() { try { // Create a new order and set values. Order sentOrder = new Order(); sentOrder.orderId = 3; sentOrder.orderTime = DateTime.Now; // Connect to a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Create the new order. Message myMessage = new Message(sentOrder); // Send the order to the queue. myQueue.Send(myMessage); } catch(ArgumentException e) { Console.WriteLine(e.Message); } return; } //************************************************** // Receives a message containing an order. //************************************************** public void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Set the formatter to indicate body contains an Order. myQueue.Formatter = new XmlMessageFormatter(new Type[] {typeof(MyProject.Order)}); try { // Receive and format the message. Message myMessage = myQueue.Receive(); Order myOrder = (Order)myMessage.Body; // Display message information. Console.WriteLine("Order ID: " + myOrder.orderId.ToString()); Console.WriteLine("Sent: " + myOrder.orderTime.ToString()); } catch (MessageQueueException) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException e) { Console.WriteLine(e.Message); } // Catch other exceptions as necessary. return; } } }
#using <system.dll> #using <system.messaging.dll> #using <system.drawing.dll> using namespace System; using namespace System::Messaging; using namespace System::Drawing; using namespace System::IO; ref class Order { public: int orderId; DateTime orderTime; }; ref class MyNewQueue { public: static void CreateQueue( String^ queuePath ) { try { if ( !MessageQueue::Exists( queuePath ) ) { MessageQueue::Create( queuePath ); } else { Console::WriteLine( "{0} already exists.", queuePath ); } } catch ( MessageQueueException^ e ) { Console::WriteLine( e->Message ); } } void SendMessage() { try { // Create a new order and set values. Order^ sentOrder = gcnew Order; sentOrder->orderId = 3; sentOrder->orderTime = DateTime::Now; // Connect to a queue on the local computer. MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" ); // Create the new order. Message^ myMessage = gcnew Message( sentOrder ); // Send the order to the queue. myQueue->Send( myMessage ); } catch ( ArgumentException^ e ) { Console::WriteLine( e->Message ); } return; } void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" ); // Set the formatter to indicate body contains an Order. array<Type^>^p = gcnew array<Type^>(1); p[ 0 ] = Order::typeid; myQueue->Formatter = gcnew XmlMessageFormatter( p ); try { // Receive and format the message. Message^ myMessage = myQueue->Receive(); Order^ myOrder = dynamic_cast<Order^>(myMessage->Body); // Display message information. Console::WriteLine( "Order ID: {0}", myOrder->orderId ); Console::WriteLine( "Sent: {0}", myOrder->orderTime ); } catch ( MessageQueueException^ ) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch ( InvalidOperationException^ e ) { Console::WriteLine( e->Message ); } // Catch other exceptions as necessary. return; } }; int main() { // Create a new instance of the class. MyNewQueue^ myNewQueue = gcnew MyNewQueue; // Create a queue on the local computer. MyNewQueue::CreateQueue( ".\\myQueue" ); // Send a message to a queue. myNewQueue->SendMessage(); // Receive a message from a queue. myNewQueue->ReceiveMessage(); return 0; }
package MyProject; import System.*; import System.Messaging.*; import System.Drawing.*; import System.IO.*; // The following example // sends to a queue and receives from a queue. public class Order { public int orderId; public DateTime orderTime; } //Order /// <summary> /// Provides a container class for the example. /// </summary> public class MyNewQueue { //************************************************** // Provides an entry point into the application. // // This example sends and receives a message from // a queue. //************************************************** public static void main(String[] args) { // Create a new instance of the class. MyNewQueue myNewQueue = new MyNewQueue(); // Create a queue on the local computer. CreateQueue(".\\myQueue"); // Send a message to a queue. myNewQueue.SendMessage(); // Receive a message from a queue. myNewQueue.ReceiveMessage(); return; } //main //************************************************** // Creates a new queue. //************************************************** public static void CreateQueue(String queuePath) { try { if (!(MessageQueue.Exists(queuePath))) { MessageQueue.Create(queuePath); } else { Console.WriteLine(queuePath + " already exists."); } } catch (MessageQueueException e) { Console.WriteLine(e.get_Message()); } } //CreateQueue //************************************************** // Sends an Order to a queue. //************************************************** public void SendMessage() { try { // Create a new order and set values. Order sentOrder = new Order(); sentOrder.orderId = 3; sentOrder.orderTime = DateTime.get_Now(); // Connect to a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Create the new order. Message myMessage = new Message(sentOrder); // Send the order to the queue. myQueue.Send(myMessage); } catch (ArgumentException e) { Console.WriteLine(e.get_Message()); } return; } //SendMessage //************************************************** // Receives a message containing an order. //************************************************** public void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Set the formatter to indicate body contains an Order. myQueue.set_Formatter(new XmlMessageFormatter(new Type[] { MyProject.Order.class.ToType() })); try { // Receive and format the message. Message myMessage = myQueue.Receive(); Order myOrder = (Order)myMessage.get_Body(); // Display message information. Console.WriteLine("Order ID: " + Convert.ToString(myOrder.orderId)); Console.WriteLine("Sent: " + myOrder.orderTime.ToString()); } catch (MessageQueueException exp) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException e) { Console.WriteLine(e.get_Message()); } // Catch other exceptions as necessary. return; } //ReceiveMessage } //MyNewQueue


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


XmlMessageFormatter コンストラクタ

名前 | 説明 |
---|---|
XmlMessageFormatter () | 対象の型を設定せずに、XmlMessageFormatter クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
XmlMessageFormatter (String[]) | XmlMessageFormatter クラスの新しいインスタンスを初期化し、完全限定型の文字列値の配列として渡された対象の型を設定します。 .NET Compact Framework によってサポートされています。 |
XmlMessageFormatter (Type[]) | XmlMessageFormatter クラスの新しいインスタンスを初期化し、オブジェクト型の配列として渡された対象の型を設定します。 .NET Compact Framework によってサポートされています。 |

XmlMessageFormatter コンストラクタ ()
アセンブリ: System.Messaging (system.messaging.dll 内)


書き込み時には対象の型は必要ないため、このコンストラクタのオーバーロードは、キューに書き込むときに最も頻繁に使用されます。
このコンストラクタを使用して作成された XmlMessageFormatter のインスタンスを使用してキューからメッセージを読み取るには、フォーマッタが逆シリアル化する型を認識できるように、TargetTypeNames プロパティまたは TargetTypes プロパティを設定する必要があります。
新しい MessageQueue を作成すると、対象の型を設定せずに、既定の XmlMessageFormatter インスタンスが作成されます。フォーマッタはこのコンストラクタを使用して作成されるため、キューから読み取るには、フォーマッタ インスタンスの対象の型を設定する必要があります。


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- XmlMessageFormatter コンストラクタのページへのリンク