DCSIMG
reflection - שלמה גולדברג (הרב דוטנט)
Sign in | Join | Help

שלמה גולדברג (הרב דוטנט)

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

Browse by Tags

because it is registered in web.config and lives in the same directory as the page
03 January 11 03:26 PM | Shlomo | 2 comment(s)
הוספה של User Control לעמוד. במידה ואתם עובדים עם User Controls יש שתי דרכים להשתמש בהם בדפי ה - aspx שלנו. דרך אחת להוסיף שורת Register בתחילת העמוד: <% @ Register src ="~/UserControl.ascx" tagname ="UserControl" tagprefix ="uc1" %> דרך נוספת היא לרשום את ה - UserControl בקובץ ה - web.config, כך: < system.web > < pages > < controls > < add src = " ~/UserControl.ascx " tagName = " UserControl " tagPrefix = " uc1 "...
Adding a Web reference dynamically at Runtime And Invoke the methods
13 May 10 07:05 AM | Shlomo | 2 comment(s)
כיצד ניתן להפעיל מתודות של WebService שה - Proxy שלו נוצר בזמן ריצה. בפוסט הקודם הראיתי שני דרכים לעבוד עם WebService שיש לנו את הכתובת שלו רק בזמן ריצה. קבלתי שאלה במייל כיצד ניתן לקבל את רשימת המתודות שלו ולהפעיל אותם. התשובה היא כמובן בעזרת reflection . ואני אדגים כאן איך עושים את זה. את דוגמת הקוד ניתן להוריד כאן . הפתרון של בניית ה - WebService בצורה דינמית מתבסס על התשובה כאן נתחיל: נגדיר מחלקה בשם WsProxy. ויהיו בו המתודות הבאות: GetWebService Methods GetPartameters Inovke נעבור על המתודות...
Adding a Web reference dynamically at Runtime
10 May 10 01:25 PM | Shlomo | 5 comment(s)
כיצד ניתן לקבל מידע מרחוק בצורה דינמית - (כלומר בלי לעשות Add Web Reference בזמן הפיתוח.) (אפשר להוריד את דוגמת הקוד מכאן ) נניח את המקרה הבא: אתם מפתחים אתר שיודע להציג סרטונים עבור חברות ואותם חברות מעוניינות להגדיר בצורה דינמית אלו פרסומות יוצגו לפני ואחרי הסרטון. פתרון ראשון: נשמור בבסיס הנתונים כתובת של Web Service שתחזיר רשימה של מחרוזות (עם שמות הפרסומות) בעייה: איך נפנה ל - Web Service בלי שאנחנו מכירים אותו מראש בזמן הפיתוח ? הרי בדרך כלל אנחנו מוסיפים Reference ומקבלים proxy שאנחנו עובדים...
Disposable Property
09 February 10 09:16 AM | Shlomo | 3 comment(s)
עדי הראה לי רעיון מאוד מעניין למימוש שמירת אובייקט זמני בזיכרון. למה הכוונה ? נניח שיש לנו קוד כזה public class FileLogger : ILogger { } public class MockLogger : ILogger { } public class Person { public ILogger Logger { get ; set ; } } ויש לנו את פונקצייה שמקבלת כפרמטר Person אבל בחלק מהקוד של הפונקצייה לא רוצים שה - Logger יהיה FileLogger אלא MokeLogger - מן הסתם נעשה קוד כזה public void Func( Person person) { ILogger original = person.Logger; person.Logger = new MockLogger (); //work..... person...
שיעור על Attribute ושימוש ב - Reflection
04 December 09 09:28 AM | Shlomo | 6 comment(s)
את הדוגמא ניתן להוריד מכאן : יצא לי בזמן האחרון להסביר כמה פעמים את המושג Attribute - ולכן חשבתי לכתוב פוסט שיסביר את המושג למי שנכנס לעולם התכנות. כשאנחנו כותבים מחלקות בדרך כלל יש לנו מאפיינים - המאפיינים הם בעצם מידע ששייך למופע של המחלקה, לדוגמא: public class Person { public int Id { get ; set ; } public string Name { get ; set ; } } הגדרנו מחלקה עם שני מאפיינים, מספר ושם, המשמעות של אותם מאפיינים שכשיהיה לנו מופעים של Person, לכל מופע יש את השם שלו והמזהה שלו. לפעמים אנחנו רוצים להגדיר התנהגות...
UnmanagedMemoryStream and PinnedBufferMemoryStream
12 July 09 02:14 PM | Shlomo | 3 comment(s)
יש class מעניין בשם UnmanagedMemoryStream, התפקיד שלו בחיים זה לספק גישה לבלוקים בזיכרון קוד שאינו מנוהל. בדוגמא ב - MSDN יש את דוגמת הקוד הבאה: (שם זה מופיע עם הערות) unsafe { byte [] message = UnicodeEncoding .Unicode.GetBytes( "Here is some data." ); IntPtr memIntPtr = Marshal .AllocHGlobal(message.Length); byte * memBytePtr = ( byte *)memIntPtr.ToPointer(); UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream (memBytePtr, message.Length, message.Length, FileAccess .Write);...
Expand and Collapse asp.net TreeView using javascript
05 June 09 04:07 PM | Shlomo | 5 comment(s)
אנחנו מקימים כעת בסלע תת אתר חדש לרישום סטודנטים להסמכות . באחד הדפים הפנימיים רצינו להשתמש ב - TreeView Control שקיים ב - Asp.net, כשרצינו לבצע Collapse All ו - Expand All ל - tree, גילינו שיש לו פונקציות שיודעות לבצע את זה אבל זה בצד השרת, וזה לא נשמע לי הגיוני לללכת לשרת כדי לסגור או לפתוח את ה - tree, ולכן בקשתי מאחי יוסי גולדברג לכתוב פונקציית java script שיודעת לפתוח ולסגור את ה - tree view, הוא עשה עבודה מצויינת, וכתב קובץ JS שמכיל את הפונקציות הנדרשות, ואז חשבתי לעצמי למה שלא נירש מ - treeView...
Resource and Culture and UICulture (והשמה אוטומטית של מידע)
09 May 09 09:23 PM | Shlomo | 7 comment(s)
קבצי resource הם דרך נהדרת לשמור את ההודעות והטקסט של האפליקצייה לפי ה culture, הדבר שמעצבן אותי כמפתח, שאני צריך בכל פעם לכתוב את הקוד של ההשמה מתוך קובץ ה resource על ה label המתאים. אז לפני שאני אראה את הפיתרון שאני משתמש, נעשה מעבר מהיר על הנושא. לטובת אלו שלא יודעים מה זה resource ומה זה culture. נניח שיש לי אפליקצייה שאני רוצה שתהיה גם באנגלית וגם בעברית, נתעלם לרגע מהעובדה שכיון הכתיבה הוא הפוך, ונתמקד בזה שהטקסט צריך להיות בשתי השפות. איך נעשה את זה ? קליק ימין עם העכבר על הפרויקט שלנו, נבחר...
DataReader Helper Part 2
16 April 09 09:55 PM | Shlomo | 5 comment(s)
בהמשך ל פוסט הקודם שכתבתי על איך להביא נתונים מטבלה שממופה לאוביקט (אחד לאחד - עבור כל עמודה יש מאפיין עם אותו שם). אז כמו שכתב רותם , ברגע שזה לא בדיוק אחד לאחד, זה לא יעבוד. אז הנה הגירסא המורחבת של הפיתרון, (אפשר להוריד אותו מכאן .) (אולי כדאי להעלות אותו גם ל Code Plex, מה אתם אומרים ?) וכמובן על ידי attribute, ואם כבר הרחבתי את הפיתרון, אז שיניתי את המתודה ל Extension. הנה הקוד של ה attribute: [ AttributeUsage ( AttributeTargets .Property, AllowMultiple = false )] public class MapAttribute ...
DataReader Helper
15 April 09 11:52 PM | Shlomo | 3 comment(s)
הרבה פעמים יש לי טבלה ב DB ובמקביל יש לי אובייקט שממופה אחד לאחד לטבלה, ואז כשאני רוצה להביא את הנתונים, אני כל פעם צריך לכתוב את הקוד של בניית האובייקט מתוך ה reader, אז כדי להקל עלי את העבודה, כתבתי את המתודה הבאה: public static object Build( DbDataReader reader, Type type) { ConstructorInfo ctor = type.GetConstructor( Type .EmptyTypes); if (ctor == null ) { throw new Exception ( @"To use reader helper, your class must have a less parameter constructor" ); } object newObject = ctor.Invoke...
authentication from code using Login control (using reflection)
09 February 09 07:17 PM | Shlomo | 1 comment(s)
בהרבה מקרים כשאני משתמש עם ה Login Control, אני רוצה את האפשרות שבזמן פיתוח, יהיה לי לחצן שכשאני לוחץ עליו, הוא יעשה Login עם שם משתמש וסיסמא קבועים מראש, (אני לא רוצה להשתמש ב Remember Me) הבעייה, שה Control הנהדר, נותן לי את האפשרות רק לשנות את ה UserName מקוד, אבל הוא לא נותן את האפשרות לשנות את הסיסמא מקוד, וגם לא נותן את האפשרות לעשות Login מקוד, ולכן. מה שאני עושה זה לכתוב את הקוד הבא, ב PageLoad: 1 #if DEBUG 2 Button btn = new Button (); 3 btn.Text = "Login With 1 and 1" ; 4 form1...