1

クラスにラップされた一連のプロパティを受け取り、それを Azure Service Bus キューにプッシュする C# のメソッドがあります。プッシュする必要のある型が非常に多いため、匿名オブジェクトを受け取り、BrokeredMessaging クラスを使用してそれをサービス バス キューに送信するメソッドを作成しました。

この行に沿った何か:

//I intially used the string type to know what type of class is passed 
//and then using switch statement, handle each case accordingly.
//But it becomes a very long list of switch statements and I don't want that.
public static bool QueueUp(Object obj, string type)
{
    var msg = new BrokeredMessage(obj);
    _sendObjClient.Send(msg);
}

このコードは機能していません。明示的に型指定されたオブジェクトを渡すことから、このメソッドが呼び出される多くの場所を節約したいと思います。オブジェクトを送信するだけでよいので、コードのこの部分で大変な作業を行い、シリアル化してキューに送信する必要があります。

名前空間を紹介したばかりSystem.Reflectionですが、実際に目標を達成する方法をまだ把握していません。どんな助けでも大歓迎です。

4

1 に答える 1

0

オブジェクトのクラスとプロパティをシリアル化可能としてマークする必要があります - How to Use Service Bus Queuesから:

Service Bus キューとの間で送受信されるメッセージは、BrokeredMessage クラスのインスタンスです。BrokeredMessage オブジェクトには、一連の標準プロパティ (Label や TimeToLive など)、カスタム アプリケーション固有のプロパティを保持するために使用されるディクショナリ、および任意のアプリケーション データの本体があります。アプリケーションは、シリアル化可能なオブジェクトを BrokeredMessage のコンストラクターに渡すことによってメッセージの本文を設定できます。その後、適切な DataContractSerializer を使用してオブジェクトをシリアル化します。または、System.IO.Stream を提供することもできます。

次に、SerializableAttribute クラスを確認して、クラスを Serializable としてマークする方法を学習します。

于 2013-05-20T04:39:53.817 に答える