שום דבר כבר לא מוקפץ?

Zeliran

New member
Class Serializaiton

כל פעם שאני עושה serializaiton לקלאס, אני צריך ליצור בשבילו קובץ חדש? אם לא..איך אני מבדיל בין הקלאסים באותו הקובץ? ואיך אפשר לעשות לקלאס deserialize? הדוגמה ב MSDN לא מסבירה את זה..
 
בשביל מה אתה צריך את זה ?

קראתי על זה ב MSDN, לא ממש הבנתי למה זה טוב... תוכל להסביר לי מה הצורך לך ? אולי כך אבין טוב יותר.
 
../images/Emo4.gif בשביל זה אני לא צריך אותך..

אמרת שקראתי כבר כמה מאמרים, ולא מצאתי מהו ממש שימושי, לכן ביקשתי שתכתוב 2 שורות שמסבירות איזה שימוש *אתה* עושה בזה..
 

Zeliran

New member
>>

אני משתמש בהם לשמירה של קלאסים ורשימות.. יתרון ב serializaiton על שמירה לקבצי טקסט למשל.. היא שקבצי טקסט כל אחד יכול לערוך בלי בעיה.. לעומת זאת כאשר אתה עושה serializaition הקבצים הם נשמרים כבינארים..דבר שמקשה על צפפייה בנתוני הקבצים ועריכתם..
 

nattygur

New member
מעבר לשמירת של מחלקות

בקובץ ניתן לשמור את האוביקט בזיכרון משותף למספר אפליקציות (MMF- Memory map files) וכך לשתף אותו בין מספר אפליקציות. בנוסף ניתן לעשות Serialivation לטכסט ולשלוח את התוצר לאפליקציות אחרות על מחשבים אחרים. לדוגמה מנגנון ה View state ב ASP.net משתמש ביכולת כזאת בכדי לישמור את האוביקטים בצד השרת ל Postbaks.
 

Zeliran

New member
שאלה פשוטה פשוטה..

יכולים פשוט לענות ב"כן" או "לא"? האם כאשר עושים serializaiton לקלאס, אז צריך ליצור לכל קלאס קובץ משלו, או שאפשר לשמור כמה קלאסים לקובץ אחד?
 

Zeliran

New member
>>>>>>

קראתי מאמר על Object Serialization using C# (קישור מצורף..) מוסבר שם איך לעשות serializaiton לקלאס.. אבל למעשה, כל פעם שאני אריץ את הפונקציה של serialize אז התוכנית תדרוס את הקובץ הקודם, איך אני אמור להכניס באותו הקובץ, כמה קלאסים? כי למעשה, (לפחות בדוגמה שם..) לא קיים שום סימן ל"מחיצות" בין קלאס לקלאס שאפשר כביכול להכניס..
 

gilad g

New member
אז למה שלא תבנה

מעין "אובייקט גג" ששומר בתוכו את כל האובייקטים שאתה רוצה להכניס לקובץ?
 

Zeliran

New member
כנראה בגלל...

שלא ממש ידעתי שאפשר לעשות דבר כזה.. או בכלל איך עושים אותו
אז.. מה זה בעצם? אתה מתכוון למעין מערך של כל הקלאסים או איזשהו אובייקט מיוחד למטרה זו?
 

gilad g

New member
פשוט

אובייקט שמכיל את כולם:
[Serializable] class toSave { public myClass myObj; public myClass2 myObj2; }​
שים לב שהוא צריך להיות Serializable.
 

Zeliran

New member
>>>>>>>

נלך על פשוט.. נגיד והחלטתי לעשות לכל קלאס קובץ משלו (כדי לקצר תהליכים..אולי אחר כך אני אשנה את זה..) אז יש דרך שאני אדע כמה קבצים יש בתיקייה מסויימת? ואז למשל, אני נותן לכל קובץ מספר (1..324) אז אני יכול לרוץ עם לולאה על כל הקבצים ולעשות לכולם deserialize..
 

Zeliran

New member
>>>>

קראתי מאמר על Object Serialization using C# (קישור מצורף..) מוסבר שם איך לעשות serializaiton לקלאס.. אבל למעשה, כל פעם שאני אריץ את הפונקציה של serialize אז התוכנית תדרוס את הקובץ הקודם, איך אני אמור להכניס באותו הקובץ, כמה קלאסים? כי למעשה, (לפחות בדוגמה שם..) לא קיים שום סימן ל"מחיצות" בין קלאס לקלאס שאפשר כביכול להכניס..
 

nattygur

New member
אתה תמיד יכול לעשות Serialization

לאוביקט ולטפל בעצמך ב Stream אשר מתקבל. הדרך הנפוצה ביותר היא להחזיק טבלה אשר מגדירה אלו אובייקטים נימצאים בקובץ וכל אוביקט מה גודלו ונקודת ההתחלה שלו בקובץ. את הטבלה ניתו לשמור בקובץ אחר או לחילופין בגודל קבוע מראש באותו קובץ. לפי הטבלה תוכל לשלוף בקלות אובייקט מסויים. הבעיה היא יותר תחזוקה של מערכת כזאת (מחיקה של אובייקט דורשת צימצום שטחים וכו')
 

Zeliran

New member
בעיה בקימפול\דיבאג..

כל פעם שאני מנסה לעשות לקמפל או לעשות דיבאג לתוכנית, אז ה vs.net בודק אם יש בעיות בקוד..אבל כשהוא אמור להריץ את התוכנית הוא פשוט לא עושה כלום.. שמתי גם MessageBox בקונסטרקטור של ה mainForm אבל גם אליו או לא הגיעה.. אני לא יודע כמה זה חשוב..אבל הטופס הראשי הוא mdiParent..
 

gilad g

New member
../images/Emo18.gif שרשר שאלותיך

בדוק במאפיני הפרויקט שלך, שיש לך StartupObject, כמו בתמונה
 
למעלה