ראינו פעם שעברה כיצד ניתן להזריק לType גנרי פרמטרים גנריים.
לפעמים אנחנו מעוניינים לעשות להפך – יש לנו Type גנרי שהוזרקו אליו הפרמטרים, ואנחנו מעוניינים לקבל את הטיפוס הגנרי (ללא הפרמטרים הגנריים המוזרקים), או לחלופין לקבל את הפרמטרים הגנריים המוזרקים.
כדי להשיג את הType הגנרי ללא הפרמטרים הגנריים המוזרקים, נוכל להשתמש בפונקציהGetGenericTypeDefinition:
|
|
כדי לחלץ את הארגומנטים הגנריים נוכל להשתמש בפונקציה GetGenericArguments המחזירה לנו מערך של הארגומנטים הגנריים:
|
|
אם נשתמש GetGenericArguments על טיפוס שהוא Unbound, נקבל את הפרמטרים "הגנריים":
|
|
הבעיה עם הפונקציות האלה היא שאם נקרא להן על טיפוס שאינו גנרי, נקבל Exception.
נוכל למנוע זאת ע"י בדיקה האם הטיפוס הנתון הוא גנרי:
הProperty ששמו IsGenericType מציין האם הטיפוס הנתון הוא גנרי (בין אם הוא closed ובין אם הוא unbound)
|
|
יש גם Property בשם IsGenericTypeDefinition שמציין האם הטיפוס הנתון הוא unbound:
|
|
בנוסף, נוכל לראות האם טיפוס מסוים הוא פרמטר גנרי (כמו שראינו למעלה):
|
|
לבסוף, נוכל לראות את הConstraintים שיש על הטיפוסים הגנריים:
למשל, נניח שיש לנו מחלקה כזו:
|
|
(ראו גם טיפ מספר 29,30)
אז הקוד הבא ידפיס
|
|
ראו גם טיפ מספר 317
שיהיה שבוע טיפוסי טוב