הכרנו בעבר (טיפים מספר 36-40) את המושגים של covariance וcontravariance.
ראינו שהFeatureים האלה קיימים רק מC# 4.0.
אפשר לחקות את ההתנהגות הזאת גם בC# 2.0 ומעלה בצורה הבאה:
אם אנחנו רוצים שפונקציה שלנו תוכל להתמודד למשל עם IEnumerable
|
|
כעת נוכל לקרוא לה כך:
|
|
זה עובד בזכות הFeature האהוב עלי של הקומפיילר שיודע לזהות implicitly את הפרמטר הגנרי שאנחנו מעוניינים לשלוח לפונקציה. (ראו גם טיפ מספר 28)
כמובן, זה לא מאפשר לנו כל מה שמאפשר covariance, אבל זה פתרון אפשרי.
כמובן, אם אנחנו מתכנתים בC# 4.0, ניתן להשתמש בCovariance של IEnumerable ופשוט לכתוב כך:
|
|
ואז זה יעבוד.
סוף שבוע קו-ואריאנטי טוב!