הקדמהמאמר זה מציג דרכים לשכפול של אובייקטים בSilverilght. פעולה כזו נדרשת לא מעט כאשר מתעסקים עם נתונים ורוצים לאפשר למשתמש דרך לשכפל אותם.ראיתי מספר דוגמאות ברשת שבהן מבצעים שכפול ידני (יצירת אובייקט והעתקת כל property בנפרד). הדרכים שמופיעות במאמר זה מראות כיצד ניתן לעשות פעולה זו באופן אוטומטי ובכך לצמצם טעויות אנוש, ליצור קוד נקי וקריא יותר, למנוע קידוד פרטני hardcoded ומימוש פתרון גנרי.
מגבלות טכנולוגיותהדרכים המתוארות במאמר משתמשות בReflection. מטעמי אבטחה חסמו בSilverlight את האפשרות לגשת לPrivate members. המשמעות היא שהאובייקט המשוכפל יהיה זהה לאובייקט המקור בproperties שהם public בלבד. קישור להסבר על הגבלה זו בMSDN.
שיטה 1 – שכפול באמצעות DataContractSerializerבשיטה זו אנחנו עושים שימוש באובייקט DataContractSerializer כדי ליצור את השכפול.
הכנההוסף רפרנס לקובץ הבא:System.Runtime.Serialization.dllהוסף את הusing הבא בתחילת הקובץ: using System.Runtime.Serialization;
קידודנגדיר אובייקט מסוג Person. בהמשך המאמר נשתמש באובייקט זה לצורך הדגמה של השיטות.
מגבלות טכנולוגיותהדרכים המתוארות במאמר משתמשות בReflection. מטעמי אבטחה חסמו בSilverlight את האפשרות לגשת לPrivate members. המשמעות היא שהאובייקט המשוכפל יהיה זהה לאובייקט המקור בproperties שהם public בלבד. קישור להסבר על הגבלה זו בMSDN.
שיטה 1 – שכפול באמצעות DataContractSerializerבשיטה זו אנחנו עושים שימוש באובייקט DataContractSerializer כדי ליצור את השכפול.
הכנההוסף רפרנס לקובץ הבא:System.Runtime.Serialization.dllהוסף את הusing הבא בתחילת הקובץ: using System.Runtime.Serialization;
קידודנגדיר אובייקט מסוג Person. בהמשך המאמר נשתמש באובייקט זה לצורך הדגמה של השיטות.
public class Person
{
public string Name { get; set; }
public int ChildrenCount { get; set; }
public DateTime Birthday { get; set; } [IgnoreDataMember]
public string Comments { get; set; }
}
Read more: Eran Sakal's blog
QR:
{
public string Name { get; set; }
public int ChildrenCount { get; set; }
public DateTime Birthday { get; set; } [IgnoreDataMember]
public string Comments { get; set; }
}
Read more: Eran Sakal's blog
QR:
0 comments:
Post a Comment