בהמשך לטיפים הקודמים,
הכרנו את MethodInfo ואת PropertyInfo. ראינו שאם אנחנו קוראים לפונקציה GetMethods או GetProperties של Type אנחנו מקבלים גם Methods או Properties ששייכים לטיפוסים שאנחנו יורשים מהם.
למשל, ראינו שאם אנחנו קוראים לGetMethods אנחנו מקבלים גם 4 פונקציות מObject:
|
|
נניח שאנחנו יוצרים טיפוס משלנו ודורסים את ToString. האם נוכל לדעת עפ"י GetMethods האם הפונקציה היא של הטיפוס שלנו או של טיפוס אחר?
כדי לענות על שאלה זו – נציג את MemberInfo – זהו טיפוס שכל המחלקות מReflection שפגשנו יורשות ממנו. יורשות ממנו MethodInfo, PropertyInfo ואפילו Type.
לטיפוס זה שני Properties מעניינים:
ReflectedType וDeclaringType. הראשון מייצג את הType שעשינו עליו Reflection כדי לקבל את הMemberInfo, למשל:
|
|
זה יכול להיות שימושי אם נכתוב, למשל, פונקציה המקבלת MethodInfo ותרצו לדעת מאיזה Type היא התקבלה ע"י Reflection.
הProperty השני מייצג את הType אליו שייך הMemberInfo. אם, למשל, נריץ את הקוד הבא על הטיפוס Person מאתמול:
|
|
נשים לב שהמתודות שהוספנו בPerson אכן שייכות לPerson, והשאר שייכות לobject.
אם נדרוס את ToString, למשל, נוכל לקבל משהו כזה:
|
|
המשך יום הצהרה משוקף לטובה