קראתי פה בפורום על Reflection

אוהדד

New member
קראתי פה בפורום על Reflection

מה זה המושג הזה ? לפי מה שקראית הוא מאפשר לי לדעת כיצד Class מסויים בנוי - אילו משתנים ומתודות יש לו (גם ציבוריים וגם פרטיים) וגם כיצד בנוי אסמבלי (DLL) מסויים - אילו Classes הוא מכיל. האם אכן זה בעצם Reflection ? אם לא - אז מה זה ?
אם כן, בשביל מה זה טוב ?
 

nattygur

New member
כן Reflection זאת היכולת

לתחקר את המבנה של Assembly אבל גם להפעיל אותו. בשביל מה זה טוב? זה מאפשר לך לבחון בזמן ריצה DLLs, לנתח אותם ולהפעיל פונקציונאליות בהם. הדוגמה הטובה ביותר היא אחת מהסיבות שגרמו ל .Net והיא Attributes. נגיד שיש לנו תשתית אשר אחראית על טרנזקציות. אנחנו רוצים להגיד לתשתית באלו פונקציות אנחנו רוצים להכיל טרנזקציה ובאלו לא. הדרך הפשוטה ביותר היא הגדרת Attributes לפונקציות אשר דורשות טרנזקציה. רכיב התשתית יכול לעבור על ה Metadata של פונקציה, לבדוק עם יש לה Attribute של טרנזקציה ולפעול בהתאם.
 

אוהדד

New member
אבל...

אני יכול במקום זה לכתוב פונקציה (בתוך קלאס כמובן) שתחזיר לי ערך TRUE או FALSE... כלומר - לממש את הבדיקה הזו בצורה רגילה, בלי צורך לשקף את האסמבלי... לא ? מה ההבדל ? אגב, Attributes מה זה ?
תודה !
 

nattygur

New member
כן אבל

אז זה לא תשתית כל מחלקה צריכה להפעיל טרנזקציה של עצמה. אם זה תשתית הטרנזקציה משותפת לכל הרכיבים, קוד חיצוני מפעיל טרנזקציה ושולח אותה לכל פונקציה. Attribute זאת דרך למפתחים להצהיר על כוונתם לגבי הקוד [Serializable] לדוגמה מצהיר על המחלקה כי היא ניתנת לעבור serialization
 
למעלה