DCSIMG
Dynamic Interface in C# ,Wish List - I Love C#
Sign in | Join | Help

I Love C#

Eyal Vardi

Dynamic Interface in C# ,Wish List

פורסם בתאריך Jan 14 2012, 06:59 AM על ידי Vardi | ישנם 1 תגובות

הקדמה

לאחר אין ספור כיתות לימוד שהסברתי להם את הכוח וה"יופי" של שפות Strongly Type , כשראיתי בפעם הראשונה את Anders Hejlsberg מציג את dynamic, הרגשתי תסכול רב ,איך הוא בא ומציג את dynamic ,שסותר תפיסה זו. הזמן עבר, וביקשו ממני להרצות על C# 4.0 ונוכחתי שוב,שהעולם לא "שחור ולבן"...

מתי להשתמש ב- dynamic?

כאשר אני רוצה לצרוך שרות שאין לי הסכם איתו (Interface משותף) או שאני לא מכיר את ה-,Type אבל אני יודע שיש לו מתודה שאני רוצה לעבוד מולה, dynamic יעשה את החיים קלים יותר.

דוגמאת קוד בלי dynamic:

clip_image002

דוגמאת קוד עם dynamic:

clip_image004

למידע נוסף על dynamic ניתן למצוא באינטרנט. ( בפוסט זה אני לא מנסה להסביר את dynamic לכל פרטיו )


הרעיון שלי לשיפור ה Dynamic

לאחר שנתים של עבודה עם dynamic הצלחתי להגדיר מה מפריע לי ואיך הייתי רוצה שמיקרוסופט יפתרו את הנושא.

clip_image006

קוד זה נראה רגיל אך לא... ה- ICalculator הוא Interface דינמי. כלומר GetCalculator לא חייב להחזיר מחלקה שמממשת את ICalculator .אלא, שיש לה חלק מהדרישות של ה- ICalculator. כלומר בואו נניח ש- GetCalculatorמחזיר מחלקה עם מתודה אחת בלבד ADD במקום 4 מתודות שמגדיר ה-Interface. במקרה כזה הקוד הנ"ל יעבוד, אבל אם גם הייתי משתמש בעוד מתודה כמו חיסור אז בזמן ריצה הקוד היה מקבל טעות (Exception).

איך מגדירים Interface דינמי?

clip_image008

למה זה טוב?

Dynamic Interface מתנהג בדיוק כמו dynamic רגיל. ההבדל הוא , שהצד שכותב בדוט – נט (צורך השירות) מרגיש שיש לו עבודה עם strong type interface ,על יתרונותיו, למשל , Intellisense. בנוסף, יהיה יותר קל לכתוב לזה TDD. אם חושבים על זה זה בדיוק כמו WCF, שני הצדדים, השרת והלקוח לא צריכים לממש אותו ממשק והם יכולים לעבוד אחד עם השני.

סיכום

כאשר אנחנו רוצים לצרוך שרות מ"עולמות אחרים" (Com,JavaScript וכו' ) אנחנו לא יכולים לכפות עליהם את תפיסת עולמנו, כמו למשל Interface ו-Base Class ולכן אנחנו עובדים עם dynamic אבל... אין שום סיבה שאת הצד שלנו בדוט-נט לא "נקשיח" ונגדיר לעצמנו חוזה על פיו אנחנו רוצים לעבוד.

רשימת תגובות

# re: Dynamic Interface in C# ,Wish List

פורסם בתאריך Saturday, January 14, 2012 10:51 PM על ידי Lior Israel  

רעיון מעולה!!!

אני בעד :-9

איפה מצביעים?

שלח תגובה

(שדה חובה) 
(שדה חובה) 
(אופציונלי)
(שדה חובה) 

Enter the numbers above: