מאז שנוצרו Generics, נחסך מאיתנו לכתוב הרבה מאוד טיפוסים.
בין השאר, אפשר ליצור Delegateים גנריים, וכך לחסוך כתיבת הרבה Delegateים. (ראו גם טיפים 46-47)
Delegate מצוינים לדוגמה זו הם Delegateים המשמשים אותנו לצורך EventHandlerים:
הם Delegateים מהצורה:
|
|
כלומר לא מחזירים ערך ומקבלים object וטיפוס שיורש מEventArgs.
בFramework אכן ניצלו עובדה זו ויצרו EventHandler גנרי:
|
|
בMSDN ממליצים להשתמש בDelegate זה לשימוש בEventים שלנו.
למען האמת, מיקרוסופט באמת התמידה להשתמש בDelegate זה בקוד שפותח אחרי Framework 2.0 ואכן אם נסתכל על Eventים מWCF או WorkFlow הם באמת משתמשים בטיפוס EventHandler<TEventArgs>.
משום מה בטכנולוגיה WPF שיצאה כבר בFramework 3.0 (סמוך לWCF), אין שימוש בDelegate זה עבור אירועים, אלא משתמשים בDelegate מיוחד עבור כל סוג אירוע…
המשך יום חסר שכפול קוד טוב