איך אני מגדיר casting ?

  • פותח הנושא pagis
  • פורסם בתאריך

pagis

New member
איך אני מגדיר casting ?

אני מנסה לעשות casting מאובייקט מסוג System.Windows.Forms.TabPage לאובייקט שכתבתי ומקבל InvalidCastException עם חיווי ש Specified cast is not valid. אני הנחתי שכשאני עושה casting כלום לא משתנה בזכרון של האובייקט עצמו אלא רק ב reference, אז השאלה היא האם טעייתי וצריך להגדיר casting בתוך ה class או שצדקתי ופשוט הוא לא מצליח להתאים את הreference הספיצייפי לאובייקט הספציפי בזכרון....
 

yuval k

New member
השאלה היא ממה האובייקט שלך יורש...

ה-casting דורש קשר של ירושה ביניהם, גם אם לא ישיר.
 
או שיהיו מוגדר עבורם ה-Casting

על ידי שימוש ב-implicit operator באובייקט שלך תכתוב את הפונקציה הבאה:
public static implicit operator MyClass(Blah.Blah.TabPage inValue) { // Here you will do the conversion manually MyClass Result = new MyClass(); Result.MyProperty = inValue.SomeProperty; //etc... return Result; }​
עכשיו זה אמור לעבוד...
 

pagis

New member
אני מנסה לעשות casting מ object

הפרופרטי TagPage.Tag מחזירה אוביקט מסוג object, אני מנסה לעשות לו casting לאובייקט מסוג אובייקט שכתבתי ומקבל 'System.InvalidCastException עם חיווי: Additional information: Specified cast is not valid. עכשיו, אין ספק שיש קשר של ירושה בין object לבין כל דבר שזז ואוהב המבורגרים. מה לדעתכם יכולה להיות הבעיה ?
 

eofek

New member
אם ככה

אז סימן שהאובייקט שאתה חושב שנמצא ב TAG אינו באמת נמצא שם, או שנמצא אובייקט אחר שאינו כמו זה שאתה מצפה לו. תדבג את התוכנית ותסתכל על ה TAG בעזרת WATCH בדיוק לפני הפעלת שורת ה CAST. אתה גם יכול לבצע CAST בעזרת ההוראה "as" ואז לא תחטוף EXCEPTION אלא NULL.
 
למעלה