DCSIMG
VS2010 - שלמה גולדברג (הרב דוטנט) - net.rabbi@gmail.com

שלמה גולדברג (הרב דוטנט) - net.rabbi@gmail.com

מרצה בסלע ויועץ בעולם ה - net.

Browse by Tags

All Tags » VS2010 (RSS)
מציאת קובץ שבה מוגדר מחלקה
עד היום (עד המעבר ל - 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 פשוט תענוג
Posted: Mar 23 2010, 04:42 PM by Shlomo | with 1 comment(s)
תגים:,
C# 4.0 - Table Of Content
נראה לי שדי סיכמתי את החידושים ב - 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#...
C# 4.0 Part 12 - Covariance and Contravariance
המושג הזה הוא קצת וירטואלי למי שלא מכיר אותו, אז כדאי שנעבור על המושג לפני שנראה מה התחדש ב - 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...
Posted: Jul 01 2009, 09:57 AM by Shlomo | with no comments
תגים:, , ,
C# 4.0 Part 11 - Named Parameters
ל - 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 אסור לשנות...
C# 4.0 Part 10 - Optional Parameters - Behind The Scenes
פספסתי את הפוסט של מוצאי שבת, (אולי אני אכתוב היום שניים). בכל מקרה אנחנו רוצים לדעת מה קורה מאחורי הקלעים כשמשתמשים ב - 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, [ Optional , DefaultParameterValue...
C# 4.0 Part 9 - Spell Checking with word using Optional Parameters
כמו שהבטחתי אני רוצה להדגים שימוש ב - 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...
C# 4.0 Part 8 - First glance on the Optional Parameters
אחד מהתכונות החדשות של 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(...
C# 4.0 Part 7 - dynamic Limitations
דברנו מספיק על dynamic, הגיע הזמן להתקדם לתכונות נוספות וחשובות של C# 4. הדבר היחיד שנשאר בנושא של dynamic זה לדעת מה אי אפשר לעשות באמצעות dynamic. ההבנה הכי חשובה בנושא, היא - שאי אפשר (באמצעות CSharpBinder) לעשות עם dynamic יותר ממה שאפשר לעשות עם האובייקט במידה והיינו ניגשים אליו בצורה לא דינמית, היות שאנחנו יודעים שלמעשה dynamic הוא object. מה שכן - אפשר לרשת מ - DynamicObject או לרשת מ - CSharpBinder, (אבל לא כתבתי על זה עדיין פוסט). 1. אי אפשר לגשת למאפיין או מתודה שהם לא ברמת ההרשאות שלנו...
C# 4.0 Part 6 - DynamicObject class and IDynamicMetaObjectProvider interface
אחד הדברים המתסכלים בללמוד חומר על טכנולוגיה חדשה שעדיין לא יצאה בגרסה סופית, זה שבכל גרסת ניסיון נוספת ה - API עלול להשתנות, וזה מתסכל כי אף אחד לא מעדכן אותך שה - API שהיה קיים בגרסה אחת השתנה והוא נראה שונה לגמרי בגרסה הנוכחית, ב - PDC הודגם ממשק שנקרא IDynamicObject - הממשק הזה נעלם, לא קיים יותר. ולמעשה היות שכל הפוסטים שלי בנושא אינם מדברים על הגרסה הסופית של המוצר, יכול מאוד להיות שכש - C# 4.0 תצא לאויר בגרסה רשמית הדברים שוב ישתנו. אז קחו את זה לתשומת לבכם. כמו שהבטחתי בפוסט הקודם אני אראה...
C# 4.0 Part 5 - Behind The Scenes Part 2
אז אחרי שהבנו אתמול 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 ...
Posted: Jun 22 2009, 07:41 AM by Shlomo | with 2 comment(s)
תגים:, , ,
C# 4.0 Part 4 - Understanding Expression Tree
אז בפוסט הקודם ראינו שלמעשה אין ב - Runtime טיפוס dynamic, וכל מה שאנחנו משימים לתוך dynamic עובר להיות object. בפוסט הזה הייתי רוצה להראות מה קורה מאחורי הקלעים כשעושים פעולות על אובייקט מסוג dynamic. אבל - כדי להבין את הקוד שמתרנדר חייבים הבנה בסיסית ב - Expression Tree היות שכל המנגנון עובד עם Expression. ולכן בפוסט הזה אסביר על expression tree ובפוסט הבא נכנס למה שקורה מאחורי הקלעים. כשהתחלתי ללמוד את C# 4.0 והבנתי שאני חייב להבין קודם Expression Tree, הגעתי לפוסט המצויין הזה , ואני ממליץ לכולם...
C# 4.0 Part 3 - Behind The Scenes Part 1
שני הפוסטים הקודמים עסקו בהבנה איזה שימוש אפשר לעשות עם ה - dynamic. הראשון היה הדגמה פשוטה של היכולות בעוד השני הדגים את הדוגמא הפופולרית (שכולם כותבים אבל אף אחד לא מדגים) בכל המאמרים על C# 4.0 התוכנית GetCalculator. כעת ננסה להבין מה מתרחש מאחורי הקלעים. למעשה ההבנה מה מתרחש מאחורי הקלעים, מתחלקת לשניים הראשון - מה קורה כשעושים השמה לתוך dynamic. השני - מה קורה כשמפעילים מתודות או ניגשים למאפיינים של אותו dynamic. הפוסט הזה יעסוק בשאלה הראשונה, הפוסט הבא יתחיל לענות על השאלה השנייה. אז לפני הכל...
Posted: Jun 20 2009, 09:31 PM by Shlomo | with 2 comment(s)
תגים:, , ,
C# 4.0 Part 2 (The "GetCalculator program)
אז כמו שהבטחתי בפוסט הקודם אני אדגים שימוש אמיתי ב - dynamic, אפשר להוריד את התוכנית מכאן (נפתח ב VS2010) כל מי שקרה מאמר או פוסט כלשהו על C# 4.0 ראה את הדוגמא הבאה (להסבר על dynamic) במקום לכתוב את הקוד הזה: object o = GetCalculator(); MethodInfo mi = o.GetType().GetMethod( "Add" ); int res = ( int )mi.Invoke(o, new object [] { 2, 3 }); אפשר לכתוב את הקוד הבא: dynamic o = GetCalculator(); int res = o.Add(2, 3); הדוגמא הזאת תמיד הטרידה אותי, הרי אי אפשר להפעיל מתודות שהם לא public באמצעות...
C# 4.0 Part 1 (First glance on the dynamic)
כזכור לא מזמן התפרסם ב - MSDN מאמר " מה חדש ב - C# 4.0 " וזה גם היה מאמר החודש ב - MSDN Pulse . אני לומד את C# 4.0 יותר לעומק (עבור הרצאה שאני מתכוון להעביר), ואני מתכוון לכתוב סדרת פוסטים שיכנסו יותר לעומק של התכונות החדשות של השפה. אחד מהחידושים הגדולים של השפה (שיספק לי חומר לכמות פוסטים נכבדה) הוא ה - DLR (Dynamic Language Runtime אנחנו נחקור מה הוא עושה מאחורי הקלעים בפוסטים הבאים, כרגע נראה מה הוא נותן לנו לעשות (איך הוא עושה את זה, נדבר בהזדמנות אחרת) dynamic age = 23; dynamic name...