2010-08-03 11 views
8

मैं एमवीवीएम-लाइट पैकेज में देखता हूं कि मैं टोकन के साथ संदेश भेज सकता हूं- मुझे उस ऑब्जेक्ट से जुड़े संदेश के साथ एक ऑब्जेक्ट भेजना है- जैसे, जोड़ें, संपादित करें, जो कुछ भी हटाएं।टोकन के साथ एमवीवीएम-लाइट का उपयोग कैसे करें?

इस संदेश को भेजने और प्राप्त करने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि इसे सिर्फ भेजने के लिए: Messenger.Default.Send (myObject, ActionEnum.DELETE);

लेकिन प्राप्त में: मैसेन्जर.डिफॉल्ट। रजिस्ट्रार (यह, ????, हैंडल मैमेजेज);

सही वाक्यविन्यास क्या है?

धन्यवाद!

उत्तर

13

यहां प्रेषण और पंजीकरण दोनों के लिए कोड का एक त्वरित खंड है। आपका अधिसूचना वह संदेश है जो प्राप्तकर्ता को निर्देश देता है कि इरादा क्या था। सामग्री वह वस्तु है जिसे आप भेजना चाहते थे, और आप यह पहचान सकते हैं कि संदेश किसने भेजा है, और यहां तक ​​कि प्रेषक और लक्ष्य के साथ इस संदेश का उद्देश्य क्या था।

Messenger.Default.Send<NotificationMessage<Job>>(
    new NotificationMessage<Job>(this, myJob, "Add") 
); 

Messenger.Default.Register<NotificationMessage<Job>>(
this, nm => 

{ 
    // this might be a good idea if you have multiple recipients. 
    if (nm.Target != null && 
     nm.Target != this) 
     return; 

    // This is also an option 
    if (nm.Sender != null && 
     nm.Sender != expectedFrom) // expectedFrom is the object whose code called Send 
     return; 

    // Processing the Message 
    switch(nm.Notification) 
    { 
     case "Add": 
      Job receivedJob = nm.Content; 
      // Do something with receivedJob 
      break; 
     case "Delete": 
      Job receivedJob = nm.Content; 
      // Do something with receivedJob 
      break; 
    } 
}); 
14
बस एक अतिरिक्त के रूप

: टोकन किसी कार्य (अधिसूचना) की पहचान करने के लिए नहीं है, बल्कि एक रिसीवर। रिसीवर (ओं) जो प्रेषक के रूप में एक ही टोकन के साथ पंजीकरण करते हैं उन्हें संदेश मिलेगा, जबकि अन्य सभी रिसीवर इसे प्राप्त नहीं करेंगे।

आप जो करना चाहते हैं, उसके लिए मैं टूलकिट में शामिल वैकल्पिक अधिसूचना संदेश प्रकार का उपयोग करता हूं। इसमें एक अतिरिक्त स्ट्रिंग प्रॉपर्टी (अधिसूचना) है जिसे आप अपनी इच्छानुसार कुछ भी सेट कर सकते हैं। मैं इसे रिसीवर को "ऑर्डर देने" के लिए उपयोग करता हूं।

चीयर्स, लॉरेंट

+0

टोकन किसी भी वस्तु, न सिर्फ रिसीवर सही प्रकार हो सकता है? – nportelli

+1

यह सही है, टोकन किसी भी तरह से रिसीवर से संबंधित नहीं है, यह केवल एक वस्तु है (या एक int जैसे मूल्य)। यदि आप चाहें तो यह एक पहचानकर्ता है। – LBugnion

+0

@LBugnion क्या आप टिप्पणी कर सकते हैं अगर रयान का जवाब इस समस्या के लिए सबसे अच्छा अभ्यास है? या आप पोस्ट कर सकते हैं कि आप इसे कैसे प्राप्त करेंगे? धन्यवाद – GONeale

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