AuthorizeAttribute

יום שבת, יוני 15, 2013

אחד מהדרכים לנהל הרשאות באתר היא בעזרת – כל Controller או Action שנשים עליה את ה – attribute הזה יאפשר לגלוש אליו רק לאחר לוגין. במידה ונרצה לנהל הרשאות מורכבות יותר מאשר האם המשתמש עשה לוגין או לא, ניתן כמובן להשתמש עם מנגנון ה – Roles של – asp.net, במידה ואתם לא אוהבים את זה (כמו הרבה אחרים) ניתן לרשת מה – attribute הנ”ל וטיפה לשנות אותו. קוד הכניסה יראה מן הסתם כך: ...
אין תגובות

INotifyPropertyChanged and CallerMemberName

יום שלישי, נובמבר 13, 2012

הרבה מאפליקציות UI משתמשות ב – INotifyPropertyChanged כדי לדעת האם מאפיין כלשהו השתנה, בדרך כלל המחלקה תראה כך: class MyClass : INotifyPropertyChanged {     public event PropertyChangedEventHandler PropertyChanged;       private string title;     public string Title     {...
תגיות: , ,
7 תגובות

Attribute Reflection and Enums

יום ראשון, ספטמבר 23, 2012

כתבתי בעבר הסבר בסיסי לשימוש ב – attributes, בפוסט זה נראה דוגמא קצת יותר אמיתית בשיתוף עם enum. זה משהו שהציק לי רבות, נניח שיש לנו enum כלשהו עם ערכים, למשל ה – enum הבא:     public enum ToolWindow {     CallStack,     ClassDetails, ...
תגיות: , , , ,
אין תגובות

שיעור על Attribute ושימוש ב – Reflection

יום שישי, דצמבר 4, 2009

  את הדוגמא ניתן להוריד מכאן:   יצא לי בזמן האחרון להסביר כמה פעמים את המושג Attribute - ולכן חשבתי לכתוב פוסט שיסביר את המושג למי שנכנס לעולם התכנות.   כשאנחנו כותבים מחלקות בדרך כלל יש לנו מאפיינים - המאפיינים הם בעצם מידע ששייך למופע של המחלקה, לדוגמא: public class Person {     public int Id { get; set; }     public string Name { get; set; } }   הגדרנו מחלקה עם שני מאפיינים, מספר ושם, המשמעות של אותם מאפיינים שכשיהיה לנו מופעים של Person, לכל מופע יש את השם שלו והמזהה שלו.   לפעמים אנחנו רוצים להגדיר התנהגות לאובייקטים שלנו - כלומר אנחנו רוצים להגדיר איך האובייקטים יתנהגו במצבים מסויימים, והמידע...
תגיות: , , ,
8 תגובות

שיטוח של אובייקטים לקובץ – כתיבה לקובץ וקריאה מקובץ

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

  הפעם אני רוצה לכתוב פוסט לטובת אלה שנכנסים לעולם ה - Net. יצא לי בזמן האחרון כמה פעמים להדגים קריאה וכתיבה לקובץ (סירילזיציה ודיסיריליזציה), חשבתי שכדאי לכתוב פוסט על זה, כי מן הסתם יהיו עוד אנשים שלומדים ומחפשים הסבר על הנושא.     הרעיון בלקחת אובייקט ולשמור אותו בקובץ הוא כדי שנוכל לשמור על המצב של האפליקציה, נניח שיש לנו תוכנה לניהול עובדים, כשהתוכנה תיסגר כל הנתונים שיש לנו בזיכרון יעלמו, ולכן אנחנו רוצים לשמור את הנתונים שלנו בדיסק הקשיח, ולמעשה לשטח את האובייקטים שלנו מהזיכרון הנדיף לזיכרון קבוע - מה שנקרא Serialization.    את דוגמת הקוד אפשר להוריד כאן.   אז איך מבצעים את זה,...
תגיות: , , ,
9 תגובות

Test method for internal class – using InternalsVisibleTo

יום שישי, אפריל 17, 2009

  רציתי לכתוב UnitTest ל Dal שלי,   אבל ה Dal היה מוגדר כ internal, מה שגרם לכך שאני לא יכול לכתוב עבורו UnitTest, כי הם מכירים רק את ה public.   חיפוש קטן בגוגל הביא אותי לבלוג הזה של Ben Hall   הפתרון ממש נחמד, attribute שלא הכרתי בשם InternalsVisibleTo שנותן את האפשרות שגם ה internals יוכרו ב asembly אחר.   לדוגמא: יגרום לכך, שה TestDal  יכיר את ה internals,        
3 תגובות

DataReader Helper Part 2

יום חמישי, אפריל 16, 2009

  בהמשך לפוסט הקודם שכתבתי על איך להביא נתונים מטבלה שממופה לאוביקט (אחד לאחד - עבור כל עמודה יש מאפיין עם אותו שם).   אז כמו שכתב רותם, ברגע שזה לא בדיוק אחד לאחד, זה לא יעבוד.   אז הנה הגירסא המורחבת של הפיתרון, (אפשר להוריד אותו מכאן.) (אולי כדאי להעלות אותו גם ל Code Plex, מה אתם אומרים ?)   וכמובן על ידי attribute,   ואם כבר הרחבתי את הפיתרון, אז שיניתי את המתודה ל Extension.     הנה הקוד של ה attribute:   public class MapAttribute : Attribute {     public string DatabaseColumn { get; set; }     public bool UseMap { get; set; }       public MapAttribute()     {         UseMap...
5 תגובות

שליטה בסקריפט שירוץ בלחצני ה – master page

יום שבת, אפריל 11, 2009

  קבלתי את הדרישה הבאה:   יש לנו master page שיש בו לחצן בשם back,   ברוב הדפים הוא אמור לקחת דף אחד אחורה, בחלק מהדפים, הלחיצה עליו צריכה להפנות לדף בשם main.aspx, ובדף מסוים שנפתח כדיאלוג, זה צריך לסגור אותו.   וכמובן שאם נרצה בעתיד להוסיף לדפים חדשים פעולות אחרות עבור הלחצן, שזה יהיה קל.     אז פיני, העלה רעיון מבריק. ומימש אותו בצורה הבאה:     שלב ראשון: נגדיר enum עבור הפעולות האפשריות, מעל כל אפשרות, נוסיף attribute, שיכלול את הסקריפט, הנה הקוד:   public class StringValueAttribute : Attribute {     private string m_Value;         public StringValueAttribute(string value)     {         m_Value = value;     }       public string Value     {         get { return m_Value; }     } }     public...
5 תגובות