ABA


"צריך התייעצות באפיון אפליקציה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15387 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15387
עידן_הכלי

   13:47   24.06.09   
אל הפורום  
  צריך התייעצות באפיון אפליקציה  
 
   אהלן,

אני מפתח אפליקציה חדשה, שתומכת בפלאגינים.

אני רוצה לאפשר קונפיגורציה לכל אחד מהפלאגינים האלה, אבל אני לא יכול לדעת מראש מהי הקונפיגורציה הדרושה לכל פלאגין.
מה שכן, אני יכול לחייב את כותבי הפלאגינים לממש Interface שאני אחליט מהו.

אשמח לקבל רעיונות איך לקנפג כל פלאגין בנפרד. (פונקציה שמחזירה מחלקה כלשהי , ריפלקשן, וכו'..)

אל תשכחו שאני צריך גם לאפשר למשתמש להזין באיזשהו חלון את ערכי הקונפיגורציה.

תודה מראש,
עידן.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מחלקת הגדרות מסוימת... Sn00py  24.06.09 17:09 1
     אתה יכול לפרט קצת או לתת דוגמא? עידן_הכלי 27.06.09 16:33 2
         אני לא יודע אם זה פתרון כל כך יעיל Sn00py  28.06.09 17:23 3
             כמובן שכל עניין המחלקה זה לטובת הזיזיין Sn00py  28.06.09 17:24 4
                 לא הבנתי דבר אחד עידן_הכלי 28.06.09 20:33 5
                     נשמע מצויין Sn00py  28.06.09 22:13 6
                         מצאתי פיתרון יותר אלגנטי עידן_הכלי 30.06.09 22:58 7

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   17:09   24.06.09   
אל הפורום  
  1. מחלקת הגדרות מסוימת...  
בתגובה להודעה מספר 0
 
   בממשק תעשה פונקציות שחובה לממש, שהן העדכון ואחזור נתונים עם סריאליזציה...

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

   16:33   27.06.09   
אל הפורום  
  2. אתה יכול לפרט קצת או לתת דוגמא?  
בתגובה להודעה מספר 1
 
   פשוט יש לי כ"כ הרבה סוגים של קונפיגורציה ואני אמור להיות מסוגל לשמור ולעדכן אותם.

קח לדוגמא: פלאגין אחד דורש שיהיה לו בקונפ' שתי מחרוזות ורשימה של תמונות,
ואחד אחר דורש 3 תאריכים ורשימת מספרים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   17:23   28.06.09   
אל הפורום  
  3. אני לא יודע אם זה פתרון כל כך יעיל  
בתגובה להודעה מספר 2
 
   וגם קח בחשבון שהסריאליזציה של NET. מאוד איטית, אז אולי כדאי לך לבנות מנגנון משלך...

בכל מקרה, אני חשבתי על דבר כזה:
בהנחה שיש לך קבצי קונפיגורציה שונים לחלוטין לכל פלאגין, אתה יכול להשתמש בפונקציות של הניימספייס System.Reflection.Emit, וליצור מחלקה בזמן RUNTIME(כולל FIELDS מתאימים כמובן). אתה יכול לחייב את היוצר של הפלאגין לספק איזשהו קובץ טקסטי שמגדיר לך כמה שדות ומאיזה סוג יש בפורמט מסויים שתקבע, לדוגמה


***PluginName***
Dates[3]
List[int][1]

כמובן שתעשה את זה איך שאתה רוצה ואולי אפילו ב XML לטובת parse קל ומהיר...
אחרכך בעזרת Reflection.Emit תוכל ליצור את השדות הדרושים במחלקה שתיצור ולהשתמש בה בתוך מחלקת קונפיגורציה, לשמור אותה, לערוך אותה ובעצם להשתמש בה כמחלקה רגילה.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   17:24   28.06.09   
אל הפורום  
  4. כמובן שכל עניין המחלקה זה לטובת הזיזיין  
בתגובה להודעה מספר 3
 
   אתה יכול לחסוך את זה ופשוט להשתמש בקובץ טקסט עם הגדרות כמו שכתבתי מה בדיוק צריך ולהציג קונטרולים מתאימים על פי זה(על מנת לאפשר עריכה וכו') ולשמור את זה בקובץ טקסט משלך... אבל המחלקה לדעתי תעשה את הכל מסודר יותר אם תשמור על מימוש נכון של המנגנון שהופך את קובץ הטקסט עצמו למחלקה(עם Emit)

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

   20:33   28.06.09   
אל הפורום  
  5. לא הבנתי דבר אחד  
בתגובה להודעה מספר 4
 
   למה לא לגרום לפלאגין להחזיר לי Form שהוא רוצה, אני אציג אותו למשתמש ואחזיר אותו חזרה לפלאגין מלא בנתונים?

אח"כ נשאר לי רק לממש אלגוריתם לשמירה המידע ברג'סטרי או משהו.

מה אתה אומר?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   22:13   28.06.09   
אל הפורום  
  6. נשמע מצויין  
בתגובה להודעה מספר 5
 
   הרעיון שלי היה בהנחה שיש לך עוד מניפלוציות כלשהן לעשות על הנתונים(ואז הדרך שלך טיפה בעייתית).
אם כל מה שאתה רוצה לבצע זאת שמירה, מבלי להשתמש בנתונים בכלל מתוך התוכנה שלך זה רעיון אחלה...

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
עידן_הכלי

   22:58   30.06.09   
אל הפורום  
  7. מצאתי פיתרון יותר אלגנטי  
בתגובה להודעה מספר 6
 
   קיים פקד בשם PropertyGrid שיודע לקבל אובייקט ולהציג בצורה נוחה ממשק לשינוי המאפיינים של אותו אובייקט.

ככה שInterface ביני לבין הפלאגין הוא "תביא Object קונפיגורציה" ו"קח Object קונפיגורציה".

ניתן גם להרחיב את הפקד ולתת לו כל מיני עיצובים לאובייקטים מורכבים יותר.

מומלץ בחום!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net