מציאת קובץ שבה מוגדר מחלקה

יום שלישי, מרץ 23, 2010

  עד היום (עד המעבר ל - Visual Studio 2010) כשהיינו בוחרים ב - Go To Definition על מחלקה מסויימת - היינו רואים באיזה Namespace המחלקה מוגדרת, אבל לא היה דרך הגיונית למצוא באיזה dll זה יושב (כדי לדעת למה לעשות AddReference)   ב - VS2010 כשמגיעים ל - Go To Definition בחלק העליון מופיע הקוד הבא:     #region Assembly mscorlib.dll, v4.0.30128 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll #endregion     פשוט תענוג
תגיות: ,
תגובה אחת

C# 4.0 – Table Of Content

יום חמישי, יולי 2, 2009

  נראה לי שדי סיכמתי את החידושים ב - C# 4.0, אמנם יש עוד כמה חידושים אבל הם פחות מרכזיים אז חשבתי שכדאי לכתוב תוכן עניינים, ובמידה ויצא לי לכתוב על שאר החידושים אני אעדכן את הפוסט הזה.   אני מאוד מקווה שנהניתם מסדרת הפוסטים הזאת.     תוכן העניינים:   C# 4.0 Part 1 - First glance on the dynamic - בפרק זה נכיר לראשונה את המושג dynamic ונראה כמה דוגמאות פשוטות ושימושיות.   C# 4.0 Part 2 - The GetCalculator program - פרק זה ידגים גישה על ידי dynamic למחשבון שנכתב ב - net ומחשבון שנכתב ב - JS עטוף באובייקט COM.   C# 4.0 Part 3 - Behind The Scenes...
5 תגובות

C# 4.0 Part 12 – Covariance and Contravariance

יום רביעי, יולי 1, 2009

  המושג הזה הוא קצת וירטואלי למי שלא מכיר אותו, אז כדאי שנעבור על המושג לפני שנראה מה התחדש ב - C# 4.0.     ב - C# 2.0 יצא מושג חדש Covariance and Contravariance in Delegates    Covariance אומר את הדבר הבא: אפשר להגדיר delegate שמחזיר אובייקט ולתת מתודה שבפועל מחזירה מישהו שיורש ממנו, כלומר:       delegate object CovarianceDelegate();       static void Main()     {         CovarianceDelegate cd = CovarianceMethod;     }       static Person CovarianceMethod()     {       }   וזה הגיוני כי זה עומד בחוקי ה - Object Oriented (שאפשר לשלוח בן לאבא).     Contravariance אומר את הדבר הבא: אפשר להגדיר delegate שמקבל אובייקט ולתת מתודה שבפועל מקבלת את האבא, כלומר:       delegate...
תגיות: , , ,
אין תגובות

C# 4.0 Part 11 – Named Parameters

יום שני, יוני 29, 2009

  ל - Optional Parameters יש בעיה אחת קטנה.       static void Add(int id, string name = "shlomo", float age = 0)     {     }       static void Main()     {         Add(22, ,24);     }     זה לא מתקמפל וכמובן מאוד לא ברור. ולכן המציאו את ה - Name Parameters.       static void Main()     {         Add(22, age: 24);     }     גם עבור פרמטרים שהם חובה ניתן לשלוח עם השם:       static void Main()     {         Add(id: 22, age: 24);     }   זה גורם שהקוד שלנו יהיה יותר קריא. אבל צריך להיות זהירים עם השימוש ב - Named Parameters. (פוסט מומלץ לקריאה - כאן). החל מ - C# 4.0 אסור לשנות את...
3 תגובות

C# 4.0 Part 10 – Optional Parameters – Behind The Scenes

יום ראשון, יוני 28, 2009

  פספסתי את הפוסט של מוצאי שבת, (אולי אני אכתוב היום שניים).   בכל מקרה אנחנו רוצים לדעת מה קורה מאחורי הקלעים כשמשתמשים ב - Optional Parameters.   למעשה מייקרוסופט משתמשים בשני Attributes שקיימים כבר המון זמן. הראשון הוא - System.Runtime.InteropServices.OptionalAttribute והשני הוא - System.Runtime.InteropServices.DefaultParameterValueAttribute, למעשה הקוד הבא:       static void Add(int id, string name = "", float age = 0)     {     }   מתרנדר לקוד הבא:       static void Add(int id,                     string name,                     float age)     {     }   ולמעשה אפשר להשתמש עם ה - Attributes האלו לבד וזה יעבוד באותו צורה.   יותר מכך - כשמגדירים משתנה כלשהו לברירת...
2 תגובות

C# 4.0 Part 9 – Spell Checking with word using Optional Parameters

יום שישי, יוני 26, 2009

   כמו שהבטחתי אני רוצה להדגים שימוש ב - Optional Parameters.     הקוד הבא משתמש בבדיקת האיות של Word.         public static void Main()     {         Application word = new Application();           object missingValue = Type.Missing;                 Document doc = word.Documents.Add(ref missingValue, ref missingValue,                                         ref missingValue, ref missingValue);         doc.Activate();           SpellingSuggestions suggestions =             word.GetSpellingSuggestions("placa",                                 ref missingValue, ref missingValue,                                 ref missingValue, ref missingValue,                                 ref missingValue, ref missingValue,                    ...
3 תגובות

C# 4.0 Part 8 – First glance on the Optional Parameters

יום חמישי, יוני 25, 2009

  אחד מהתכונות החדשות של C# 4.0 היא Optional Parameters.   למעשה - המצב עד היום שלא היה לנו את האופציה של פרמטרי רשות, הרגיל אותנו לכתוב קוד לא כל כך נכון, למה הכוונה -  שימו לב לשני קטעי הקוד הבאים, הראשון - עושה overload למתודת Abs וקטע הקוד השני עושה overload למתודת Add. אז מה בכל זאת ההבדל ?        public static class Math     {         public static decimal Abs(decimal value);         public static double Abs(double value);         public static float Abs(float value);         public static int Abs(int value);         public static long Abs(long value);         public static sbyte Abs(sbyte value);         public static short Abs(short...
3 תגובות

C# 4.0 Part 7 – dynamic Limitations

יום רביעי, יוני 24, 2009

  דברנו מספיק על dynamic, הגיע הזמן להתקדם לתכונות נוספות וחשובות של C# 4. הדבר היחיד שנשאר בנושא של dynamic זה לדעת מה אי אפשר לעשות באמצעות dynamic.   ההבנה הכי חשובה בנושא, היא - שאי אפשר (באמצעות CSharpBinder) לעשות עם dynamic יותר ממה שאפשר לעשות עם האובייקט במידה והיינו ניגשים אליו בצורה לא דינמית, היות שאנחנו יודעים שלמעשה dynamic הוא object. מה שכן - אפשר לרשת מ - DynamicObject או לרשת מ - CSharpBinder, (אבל לא כתבתי על זה עדיין פוסט).     1. אי אפשר לגשת למאפיין או מתודה שהם לא ברמת ההרשאות שלנו, כלומר לגשת ל - private או ל - internal מתוך assembly...
תגיות: , , , ,
אין תגובות

C# 4.0 Part 6 – DynamicObject class and IDynamicMetaObjectProvider interface

יום שלישי, יוני 23, 2009

  אחד הדברים המתסכלים בללמוד חומר על טכנולוגיה חדשה שעדיין לא יצאה בגרסה סופית, זה שבכל גרסת ניסיון נוספת ה - API עלול להשתנות, וזה מתסכל כי אף אחד לא מעדכן אותך שה - API שהיה קיים בגרסה אחת השתנה והוא נראה שונה לגמרי בגרסה הנוכחית, ב - PDC הודגם ממשק שנקרא IDynamicObject - הממשק הזה נעלם, לא קיים יותר. ולמעשה היות שכל הפוסטים שלי בנושא אינם מדברים על הגרסה הסופית של המוצר, יכול מאוד להיות שכש - C# 4.0  תצא לאויר בגרסה רשמית הדברים שוב ישתנו. אז קחו את זה לתשומת לבכם.       כמו שהבטחתי בפוסט הקודם אני אראה בפוסט הנוכחי איך...
תגיות: , , , ,
תגובה אחת

C# 4.0 Part 5 – Behind The Scenes Part 2

יום שני, יוני 22, 2009

  אז אחרי שהבנו אתמול Expression Tree והבנו שלשום שלמעשה כל dynamic הוא object, כעת נראה מה קורה כשעושים פעולות על dynamic.   מה לדעתכם מתרנדר כשכותבים את הקוד הבא:       int i = 10;       dynamic d = i;     d++;   למעשה מה שקורה זה הקוד הבא (בערך - כי שיניתי את השמות של המשתנים)       private static class SiteContainer     {         public static CallSite<Func<CallSite, object, object>> p1;     }         static void Main(string args)     {         if (SiteContainer.p1 == null)         {             SiteContainer.p1 = CallSite<Func<CallSite, object, object>>.Create(                 new CSharpUnaryOperationBinder(                     ExpressionType.Increment,                     false,                     new CSharpArgumentInfo {        ...
תגיות: , , ,
2 תגובות