למה DataRow לא מממש IDictionary?
[מדובר ב-.net] נכון, IDictionary מצהיר על מתודה Add שלא מתאימה ל-DataRow שהסכמה שלה כבר נקבעה ע"י הטבלה. אז אפשר לשאול בנוסף: למה אין ממשק לקריאה בלבד של אובייקטים על-פי מפתח? השאלה עלתה עקב מימוש של חלוקת שורות ב DataTable לקבוצות, לפי ערכים מסוימים ב-DataRow. כל קבוצה מוגדרת ע"י קריטריון לערכים מסוימים. למשל אם זו טבלת לקוחות, אני מגדיר שאם שם הלקוח מכיל את המילה מיקרוסופט, השורה תשתייך לקבוצה אחת, ואם הלקוח משלם מעל אלף ש"ח בחודש, השורה שייכת לקבוצה אחרת (יש עדיפויות כדי למנוע התנגשות). אז בנתיים יש לי מתודות שמקבלות DataRow ומחזירות true/false אם השורה מתאימה או לא לקריטריון. אבל המתודות האלה לא צריכות לדעת שזה DataRow. הן רק צריכות לבקש ערכים מסוימים לפי אינדקס מחרוזתי ולבדוק אותם. מעניין אותי אם יש סיבה, משהו שהיה גורם לעיצוב ספריות .net להתחרבש לגמרי, אם היו מוסיפים IReadOnlyDictionary (אפשר לטעון שהספריות גם ככה מחורבשות, אבל זה לא יעזור
)
[מדובר ב-.net] נכון, IDictionary מצהיר על מתודה Add שלא מתאימה ל-DataRow שהסכמה שלה כבר נקבעה ע"י הטבלה. אז אפשר לשאול בנוסף: למה אין ממשק לקריאה בלבד של אובייקטים על-פי מפתח? השאלה עלתה עקב מימוש של חלוקת שורות ב DataTable לקבוצות, לפי ערכים מסוימים ב-DataRow. כל קבוצה מוגדרת ע"י קריטריון לערכים מסוימים. למשל אם זו טבלת לקוחות, אני מגדיר שאם שם הלקוח מכיל את המילה מיקרוסופט, השורה תשתייך לקבוצה אחת, ואם הלקוח משלם מעל אלף ש"ח בחודש, השורה שייכת לקבוצה אחרת (יש עדיפויות כדי למנוע התנגשות). אז בנתיים יש לי מתודות שמקבלות DataRow ומחזירות true/false אם השורה מתאימה או לא לקריטריון. אבל המתודות האלה לא צריכות לדעת שזה DataRow. הן רק צריכות לבקש ערכים מסוימים לפי אינדקס מחרוזתי ולבדוק אותם. מעניין אותי אם יש סיבה, משהו שהיה גורם לעיצוב ספריות .net להתחרבש לגמרי, אם היו מוסיפים IReadOnlyDictionary (אפשר לטעון שהספריות גם ככה מחורבשות, אבל זה לא יעזור