XmlMessageFormatter.TargetTypes プロパティ
アセンブリ: System.Messaging (system.messaging.dll 内)

Dim instance As XmlMessageFormatter Dim value As Type() value = instance.TargetTypes instance.TargetTypes = value
public: property array<Type^>^ TargetTypes { array<Type^>^ get (); void set (array<Type^>^ value); }
/** @property */ public Type[] get_TargetTypes () /** @property */ public void set_TargetTypes (Type[] value)
メッセージの読み取り時に、メッセージ本文から逆シリアル化されるオブジェクトの型を指定する Type 型の配列。


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

オーダーを含んでいるメッセージをキューに送信し、またオーダーを含んでいるメッセージをキューから受信するコード例を次に示します。
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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からXmlMessageFormatter.TargetTypes プロパティを検索する場合は、下記のリンクをクリックしてください。

- XmlMessageFormatter.TargetTypes プロパティのページへのリンク