אתמול הכרנו את הפונקציה GetType המאפשרת לנו להשיג את הType האמיתי של instance של אובייקט שיש לנו.
לעתים נרצה (מסיבות כאלה ואחרות) דווקא את הטיפוס של המשתנה בו מוחזק הInstance שלנו.
לדוגמה:
כתבנו פונקציה כזו:
|
|
עכשיו אנחנו קוראים לה ככה:
|
|
אלא שהעברנו לפונקציה משתנה מסוג IList, והיינו רוצים לדעת מה הסוג של המשתנה שהועבר לפונקציה… (כלומר מאיזה טיפוס המשתמש בפונקציה שלנו ראה אותו)
נוכל לפתור זאת בצורה הבאה:
נהפוך את המתודה לגנרית:
|
|
ובמקום להחזיר את GetType של הvalue, נחזיר את הסוג של T:
|
|
אם עכשיו נבצע את השורות שראינו מעלה נקבל באמת הטיפוס שציפינו לקבל:
|
|
מה סוד הקסם?
אחד הדברים האהובים עלי במתודות גנריות, בניגוד למחלקות גנריות, הוא שהקומפיילר החכם יכול לגלות לבד לפי הטיפוס של המשתנה בקריאה, איזה טיפוס גנרי להעביר לפונקציה.
(טיפ מספר 28, וטיפ מספר 69)
מה שקורה כאן, הוא בגלל שהמשתנה שלנו מסוג IList, אז הטיפוס הגנרי שהקומפיילר מעביר לפונקציה.
עכשיו נוכל לכתוב כל מיני דברים מצחיקים כאלה:
|
|
המשך יום טיפוסי טוב