2013-05-31 6 views
8

के साथ प्रॉपर्टीज मैं Azure सर्विस बस पर भेजने से पहले BrokeredMessage.Properties संग्रह में एक कस्टम प्रॉपर्टी जोड़ने की कोशिश कर रहा हूं।विंडोज़ एज़ूर सर्विस बस - ब्रोकर्ड मैसेज। एनम वैल्यू

[Serializable, DataContract] 
public enum FooBar 
{ 
    [EnumMember] 
    Foo = 0, 
    [EnumMember] 
    Bar = 1 
} 

मैं भी गुण के कई संयोजनों की कोशिश की है, और कोई गुण के साथ एक संस्करण: कस्टम गुण प्रकार एक enum है।

इस कोड को जो संपत्ति कहते हैं और संदेश भेजता है:

var brokeredMessage = new BrokeredMessage(new MessageObject(){ //etc }); 
brokeredMessage.Properties.Add("FooBar", FooBar.Foo); 
queueClient.Send(brokeredMessage); 

जब संदेश भेजने के लिए प्रयास करते समय निम्न त्रुटि दी है: नीचे ट्रैक करने के लिए

System.Runtime.Serialization.SerializationException : Serialization operation failed due to unsupported type Namespace.FooBar. 

मैं कोशिश की है BrokeredMessage.Properties सीमाओं (यदि कोई हो) पर कुछ और विस्तृत दस्तावेज, और कुछ भी नहीं मिला जो निर्दिष्ट करता है कि केवल आदिम प्रकारों का उपयोग किया जा सकता है।

कोई विचार यह क्यों काम नहीं करता है?

संपादित करें:

मैं Microsoft.ServiceBus की V2.1.0.0 उपयोग कर रहा हूँ ने कहा है चाहिए।

उत्तर

10

संक्षेप में, आप केवल सरल प्रकार जैसे स्ट्रिंग, पूर्णांक का उपयोग कर सकते हैं।

अपने मामले के लिए, आप दो तरीके

  1. brokeredMessage.Properties.Add ("foobar", (int) FooBar.Foo) की कोशिश कर सकते हैं;
  2. ब्रोकर्ड मैसेज.प्रोपर्टीज। जोड़ें ("फूबार", FooBar.Foo.ToString());

स्वयं द्वारा चुनें, जो आपके लिए बेहतर है।

+0

आपके उत्तर के लिए धन्यवाद। यह स्पष्ट हो गया, हालांकि इसके बारे में प्रलेखन की कमी प्रतीत होती है (जब तक कि कोई मुझे अपनी दिशा में इंगित नहीं कर सकता?) मैं हमेशा स्ट्रिंग के बजाए इंट मानों को int में परिवर्तित करना पसंद करता हूं - इसलिए यह विकल्प मैं गया था। – GaryJL

संबंधित मुद्दे