किसी भी प्रतिनिधि प्रकार को देखते हुए एक काफी आसानी से एक वर्ग जो प्रतिनिधियों या तो उस प्रकार या एक व्युत्पन्न प्रकार के होते हैं जो गठबंधन और एक संयुक्त प्रतिनिधि जो सिर्फ सब कुछ एक MulticastDelegate
कर सकते हैं के बारे में क्या करेंगे निकलेगा, और के एक नंबर लिख सकते हैं चीजें जो नहीं कर सकती हैं। एकमात्र चीज जो संयुक्त प्रतिनिधि की शैली करने में सक्षम नहीं होगी, उसके उपमहाद्वीप Delegate.Remove
द्वारा निकाले गए हैं (क्योंकि वह कार्य संयुक्त इकाई को इकाई के रूप में मानता है)। मल्टीकास्टडिलेगेट के विपरीत, संयुक्त प्रतिनिधि व्युत्पन्न प्रतिनिधि प्रकार शामिल करने में सक्षम होंगे, और केवल उन स्थानों पर ठीक काम करेगा जो केवल एक लक्ष्य चाहते हैं।
vb.net में, कोड होगा कुछ की तरह:
Class DoubleAction(Of T)
Private _Act1, _Act2 As Action(Of T)
Private Sub New(ByVal Act1 As Action(Of T), ByVal Act2 As Action(Of T))
_Act1 = Act1
_Act2 = Act2
End Sub
Private Sub Invoke(ByVal Param As T)
_Act1(Param)
_Act2(Param)
End Sub
Function Combine(ByVal Act1 As Action(Of T), ByVal Act2 As Action(Of T)) As Action(Of T)
Dim newAct As New DoubleAction(Of T)(Act1, Act2)
Return AddressOf newAct.Invoke
End Function
End Class
अनुवाद सेल्सियस के लिए # आसान होना चाहिए।
प्रतिनिधियों के संयोजन के लिए इस दृष्टिकोण के साथ एकमात्र असली समस्या यह है कि प्रतिनिधि के प्रत्येक सामान्य परिवार के लिए बॉयलरप्लेट कोड आवश्यक है (क्योंकि .NET जेनेरिक प्रकार पैरामीटर के रूप में उपयोग करने की अनुमति नहीं देता है)।
आप तुल्यकालिक प्रतिनिधि आह्वान करते हैं, यह किसी भी तरह है जो पहले से चलाने के लिए एक, क्यों अतुल्यकालिक निष्पादन किसी भी अलग होना चाहिए जानता है? – svick
@svick: मुझे लगता है कि यह नहीं होगा। यह क्रम में वे जोड़ रहे हैं, सही में invokes? – richard
@svick: मैं अपने सवाल से बाहर मेरी "अनुमान" ले लिया। मैं वास्तव में नहीं जानता कि तुम क्यों नहीं 'पर एक' MulticastDelegate' BeginInvoke' कर सकते हैं। – richard