בהמשך לHackים הקודמים, לפעמים יש לנו טיפוס אנונימי ואנחנו מעוניינים ליצור ממנו מבנה אחר, למשל ליצור רשימה שמכילה מספר אובייקטים אנונימיים כאלה.
(ראו גם טיפ מספר 90)
אני אציין שזה מקרה מאוד חריג, ובד”כ אם אנחנו רוצים לעשות דבר כזה, הדבר הנכון לעשות הוא לכתוב מחלקה אמיתית (לא אנונימית) לטיפוס הזה.
כדי לעשות משהו כזה, היינו רוצים כתוב משהו כמו הקוד הזה:
|
|
כמובן, הקוד הזה לא מתקמפל (ראו גם טיפים קודמים, למשל 150, 231)
אם בכל זאת חפצה נפשנו בלעשות דבר כזה, אפשר בשיטה הבאה:
ניצור פונקציה גנרית שמקבלת את האיבר כפרמטר:
|
|
ונקרא לה עם האיבר:
|
|
כעת נוכל לעשות כאוות נפשנו עם הרשימה:
|
|
איך זה עובד? הטריק האהוב עלי במתודות גנריות, הוא שהרבה פעמים לא צריך לציין את הפרמטר הגנרי, אלא הקומפיילר יכול לזהות אותו implicitly. זה קורה גם כאן, וזו הסיבה שהדבר הזה עובד 😃
(ראו גם טיפ מספר 28)
אפשר גם ליצור Extension Methods מתאימים, והדבר הזה יעבוד.
(ראו גם טיפים על Extension Methods, למשל 66-75)
המשך יום אנונימי טוב.