בפעמים הקודמות הכרנו קצת את השימוש בdynamic המאפשר לנו להפעיל מתודות על האובייקטים שלנו באופן דינאמי.
לFramework יש תמיכה בשינוי ההתנהגות של מה שקורה כשאנחנו קוראים לפונקציה בצורה דינאמית ע”י שימוש בdynamic.
הדבר הזה נעשה ע”י מימוש הממשק ששמו IDynamicMetaObjectProvider
מאחר וקצת קשה לממש את הממשק הזה, יש מחלקת אב בשם DynamicObject שאנחנו יכולים לרשת ממנה ולהחליט על ההתנהגות של האובייקטים שלנו ברגע שמנסים להפעיל עליו מתודות בצורה דינאמית.
לדוגמה נוכל לרשת מDynamicObject ולדרוס את הפונקציה TryInvokeMember. זו פונקציה שנקראת כל פעם שאנחנו מנסים לקרוא לפונקציה של האובייקט בצורה דינאמית:
|
|
למשל, כשנכתוב את הקוד הבא:
|
|
נקבל את התוצאה הבאה:
MyMethod was called
This compiles but throws an exception
זה קורה כי הדפסנו את הפרמטר הראשון ואת השם של הפונקציה. עף Exception כי קראנו לbase וזה מנסה לקרוא לפונקציה בצורה דינאמית סטנדרטית (כמו שראינו בטיפים הראשונים על dynamic).
המשך יום דינאמי טוב,
כי פונקציה זוגית סביב $ \mu $ זו פונקציה שמקיימת $ f(\mu - x) = f(x + \mu) $ ולא $ f(x-\mu) = f(x + \mu) $. אל תבזבזו על זה שעה מהמבחן שלכם במידה וכתוב אחרת על הטופס.