Sign in
|
Join
|
Help
שלמה גולדברג (הרב דוטנט)
מרצה בסלע ויועץ בעולם ה - net.
עמוד הבית
טופס יצירת קשר
RSS 2.0
Atom 1.0
RSS-תגובות ב
חפש
תגיות
AddIn
Ajax
ashx
asp net
Asp.Net
Asp.Net Controls
Attribute
authentication
azure
BI
C#
C# 4.0
Code Plex
config
Context Menu
Cookie
cross browser
CSS
css3
Culture
database
DataReader
DataTable
debug
DEV
DevAcademy3
dynamic
EF
Encoding
Entity Framework
Extension Method
Facebook
Generic
Global.asax
Hacking
html
html5
HttpHandler
HttpModule
IDCC
iE
IE8
ie9
IIS
iis7
Internet Explorer
internet Explorer 8
internet Explorer 9
ITPRO
JavaScript
jQuery
js
JSON
Linq
login
meta
mvc
OFFICE
OFFTOPIC
Optional Parameters
PageMethods
PostBack
Power Point
reflection
Reflector
Resource
SCC
Script Manger
SDP
Sela
Sela College Channel
silverlight
SQL Server
Static
stream
TECH
Teched_il
Telerik
Threading
UTF-8
Validators
video
Visual Studio
voice
VS2010
VSTO
WCF
Web
Web Service
Web Slice
WebApplication
WebMethod
WebService
Windows
Windows7
WinForms
xml
XMLHTTP
קוד נכון
תפוז
ארכיון
February 2012 (1)
January 2012 (9)
December 2011 (7)
November 2011 (13)
October 2011 (9)
September 2011 (1)
August 2011 (4)
June 2011 (8)
May 2011 (13)
April 2011 (14)
March 2011 (12)
February 2011 (8)
January 2011 (18)
December 2010 (10)
November 2010 (16)
October 2010 (11)
September 2010 (9)
August 2010 (21)
July 2010 (12)
June 2010 (11)
May 2010 (21)
April 2010 (19)
March 2010 (14)
February 2010 (17)
January 2010 (13)
December 2009 (16)
November 2009 (10)
October 2009 (12)
September 2009 (22)
August 2009 (9)
July 2009 (14)
June 2009 (19)
May 2009 (17)
April 2009 (9)
March 2009 (11)
February 2009 (10)
January 2009 (16)
December 2008 (23)
November 2008 (11)
ניווט
Home
All Posts
RSS
Popular Tags
Browse by Tags
All Tags
»
Extension Method
(
RSS
)
asp net
Asp.Net
Asp.Net Controls
Attribute
C#
C# 4.0
database
DataReader
DEV
Generic
IE8
JavaScript
js
Lambda Expression
Linq
reflection
Static
Web
WebApplication
WinForms
תפוז
הפעלת Linq Queries על פקדים המכילים Collections ללא חשיפה של IEnumerable מתאים
25 November 11 11:25 AM
|
Shlomo
|
2 comment(s)
אחד מהיכולות החזקות של השפה שאנחנו משתמשים בהם רבות זהו היכולת להפעיל Linq to Objects על כל מי שמממש את: IEnumerable<T> ב - windows forms ישנם הרבה פקדים המכילים collections - כמו TabControl, TreeView ועוד. הבעייה עם כל הפקדים הללו שהם חושפים את IEnumerable הרגיל, (ללא T) מה שגורם לכך שאי אפשר להפעיל עליהם שאילתות לינק. כדי לתקן זאת ניתן להוסיף Extension Method מתאים לכל פקד ולהמיר את ה - IEnumerable לאחד שתומך ב - Generic, לדוגמא: internal static class Extension { internal static IEnumerable...
Cast from Generic type
23 October 11 10:15 AM
|
Shlomo
|
3 comment(s)
אחד הדברים המפריעים בעבודה עם Generic Type, שאי אפשר לעשות להם casting לאובייקטים אחרים, לדוגמא: static void MyFunc<T>(T item) { Work(( Entity )item); } static void Work( Entity item) { } הקוד הא יזרוק שגיאה של: Cannot convert type 'T' to 'ConsoleApplication1.Entity' כדי לבצע בכל זאת המרה בין האובייקטים ניתן להשתמש ב - Convert.ChnageType בצורה הבאה: static void MyFunc<T>(T item) { Work(( Entity ) Convert .ChangeType(item, typeof ( Entity ))); } כדי לחסוך קצת זמן ולכתוב...
ListItemCollection.SelectedItems Extensions
17 April 11 09:46 AM
|
Shlomo
|
2 comment(s)
במידה ואתם צריכים לקבל מאובייקט המכיל ListItemCollection (כמו CheckBoxList ודומיו) את כל הערכים שהמשתמש בחר, תוכלו להשתמש בפונקצייה הבאה public static class ListItemCollectionExtensions { public static IEnumerable < ListItem > SelectedItems( this ListItemCollection collection) { foreach ( ListItem item in collection) { if (item.Selected) { yield return item; } } } בפוסט הבא אני אסביר מה זה ה - yield למי שלא מכיר (זה קיים מ - C#2.0)
From string to bool in javascript
26 March 11 10:45 PM
|
Shlomo
|
1 comment(s)
כששומרים משתנה בוליאני ב - cookie או ב - storage זה נשמר כמחרוזת, הבעייה כשמנסים להוציא את הערך ולשים אותו למשל ב - checkbox תמיד ה - checkbox יהיה מסומן מכיוון שגם אם הערך הוא "false" נקבל true, בגלל שכתיבה של הקוד הזה: chk.checked = "false" ; זהה לקוד הבא: chk.checked = !( "false" == true ); או לזה: chk.checked = !( "false" == false ); כדי להמיר את הערך (שנשמר כמחרוזת) ניתן להרחיב את האובייקט String. String.prototype.ToBool = function () { return this .toLowerCase...
Quick guide to LINQ (Language Integrated Query)
05 October 10 08:59 PM
|
Shlomo
|
4 comment(s)
המדריך המהיר ל - LINQ. מטרת הפוסט: בסיומו של פוסט זה אתם תדעו לכתוב קוד LINQ בשני התחבירים שלו ותבינו למה כדאי לעבוד עם LINQ ומה זה נותן לנו בתור מפתחים. תוכן עניניים מה זה לינק ומה נותן לנו השימוש בו. לפני LINQ. var keyword Anonymous Types Extension Methods Lambda Expressions כתיבת קוד שמדמה LINQ תחביר LINQ Extension Methods Syntactic sugar PLINQ מה זה LINQ ומה נותן לנו השימוש בו. הרעיון המרכזי מאחורי השימוש ב – LINQ הוא להפסיק לכתוב "איך" ולהתחיל לכתוב "מה", כלומר כשאנחנו כותבים...
Add Flag and Remove Flag for enums
24 August 10 03:57 PM
|
Shlomo
|
2 comment(s)
הדרך הקלה לשימוש ב - Enums שמוגדרים עם Flags כשקראתי את הפוסט של עידו על הפונקצייה החדשה של Enum בשם HasFlag לא הבנתי למה הם לא הוסיפו גם Add ו - Remove. חיפוש קצר בגוגל הביא אותי לכאן והנה לנו שני Extensions חדשים לעבודה עם Enum. namespace System { public static class EnumExtension { public static T AddFlag<T>( this Enum type, T value) { return (T)( object )((( int )( object )type | ( int )( object )value)); } public static T RemoveFlag<T>( this Enum type, T value) { return (T)( object...
Max() => Sequence contains no elements
16 May 10 12:33 PM
|
Shlomo
| with
no comments
קריאה לפונקציית Max או פונקציית Min כשהמערך ריק תתרסק עם השגיאה " Sequence contains no elements " אף פעם לא הבנתי למה אין MaxOrDefault עד שלבסוף מצאתי את הפוסט הבא (שמביא את הקוד הבא) public static int MaxOrDefault<TSource>( this IEnumerable <TSource> source, Func <TSource, int > selector, int defaultValue) { if (source.Any<TSource>()) return source.Max<TSource>(selector); return defaultValue; }
מי האבא שלי
03 May 10 07:31 PM
|
Shlomo
|
6 comment(s)
בדיקה האם אחד מהאבות בהיררכיה של הדף הוא מסוג מסויים. לפעמים אנחנו צריכים לדעת האם אנחנו נמצאים בתוך Control מסוים, דוגמא טובה לזה היא – האם אנחנו נמצאים בתוך UpdatePanel. למשל – בפוסט הזה הסברתי כיצד לפתור את בעיית רישום קבצי javascript מתוך user control. תוכלו לעיין שם כדי להבין אבל בגדול הפיתרון היה לכתוב משהו כזה. if (!Page.ClientScript.IsClientScriptIncludeRegistered( "key" )) { string url = ResolveClientUrl( "~/Scripts/file.js" ); Page.ClientScript.RegisterClientScriptInclude...
Add functionality using Document Object Model Prototypes (IE8)
20 April 10 10:54 PM
|
Shlomo
|
1 comment(s)
אחד מהיכלות החדשות שיש לנו ב - IE8 זה ההוספה של prototype ל - DOM. אני לא אסביר בפוסט הזה מהו ה - prototype. אבל אם אתם לא מכירים את המושג (שקיים כבר הרבה לפני IE8) אני ממליץ לכם לקרוא את הפוסט הזה (לפחות את החלק הראשון) - או את הפוסט הזה - Object Oriented Programming in JavaScript ב - IE8 הוסיפו ל - DOM את היכולת לשנות ולהוסיף פונקציות בעזרת prototype. לדוגמא. אני מניח שהרבה פעמים יצא לכל אחד מכם לכתוב פונקציה שנקראת כך: function HideFunc(obj) { obj.style.display = 'none' ; } ומן הסתם השתשמתם...
Enum.GetNames - (array of enum not of string)
13 February 10 08:48 PM
|
Shlomo
|
2 comment(s)
כשרוצים לרוץ בלולואה על כל ה - האפשרויות ב - enum כלשהו, בדרך כלל רואים קוד כזה string [] names = Enum .GetNames( typeof ( MyEnum )); foreach ( string item in names) { MyEnum myEnum = ( MyEnum ) Enum .Parse( typeof ( MyEnum ), item); // logic... } מה שעשיתי היה לקבל את כל מה שיש ב - enum כמערך של מחרוזות ואז בלולאה להמיר כל אחד ממנו למופע של ה - enum. כדי לא לכתוב את הקוד (המכוער) כל הזמן אני מעדיך לכתוב כך: MyEnum [] names = typeof ( MyEnum ).GetNames< MyEnum >(); foreach ( MyEnum item in...
string.ToLower ToTitleCase
24 January 10 05:20 PM
|
Shlomo
|
1 comment(s)
חבר לעבודה ( רון כהן ) שאל אותי איך אפשר לקבל את הפונקציונליות של ToLower עבור האות הראשונה של כל מילה, לדוגמא shlomo goldberg יהפוך ל - Shlomo Goldberg. זה הקוד שנתתי לו string str = "shlomo goldberg" ; CultureInfo c = new CultureInfo ( "en-US" ); str = c.TextInfo.ToTitleCase(str); הוא כמובן הפך את זה ל - extension methods namespace System { public static class StringExtension { public static string ToTitleCase( this string str) { CultureInfo c = new CultureInfo ( "en-US"...
הגדרה של FormBorderStyle עבור טפסים שהם MDI
17 November 09 07:43 PM
|
Shlomo
|
2 comment(s)
בתפוז עלתה השאלה הבאה: יש טופס אב ויוצרים בזמן ריצה מופעים של טפסי בן ומוספים אותם לאב - במקרה שהמאפיין FormBorderStyle מוגדר כ - none על טופס הבן, מה שיקרה בפועל שלשנייה אחת יראו את המסגרת ואז זה יעלם - השאלה כיצד מתפטרים מהמסגרת לתמיד. נניח שהקוד נראה ככה: private void button1_Click( object sender, EventArgs e) { Form2 f = new Form2 (); f.MdiParent = this ; f.Show(); } למעשה הבעייה נובעת מכך ש - windows מציירת כל הזמן את כל הפקדים שעל המסך - ולכן הדרך היחידה לא לראות את המסגרת היא להגיד למערכת...
String extension - IsNullOrEmpty - ToEnum (Enum.Parse)
24 September 09 06:00 PM
|
Shlomo
|
3 comment(s)
אני משתמש די בקביעות עם שני extensions ל - string, וחשבתי לשתף אותם. הראשון: בדיקה האם מחרוזת אינה null או ריקה בדרך כלל מתבצעת בצורה הבאה string str; if (! string .IsNullOrEmpty(str)) { } היה הרבה יותר נחמד לולא היינו יכולים לשאול על ה - str - אבל מה לעשות שאולי ה - str הינו null (וזה שאלה מכשילה). השני: המרה ממחרוזת ל - enum מתבצעת בדרך כלל ככה: enum NyEnum { One, Two } NyEnum data = ( NyEnum ) Enum .Parse( typeof ( NyEnum ), "One" ); ולכן כתבתי את המחלקה הבאה: namespace System { public...
DataReader.GetValueOrDefault --> Extension for Extension
06 September 09 12:32 PM
|
Shlomo
| with
no comments
בהמשך לפוסט שהראה איך לקבל ערכי ברירת מחדל עבור עמודות שיכולות להיות NULL בבבסיס הנתונים. שלח לי חבר יקר ( בניהו) את ההצעה הבאה: public static T GetValueOrDefault<T>( this DbDataReader reader, int index) { if ( Convert .IsDBNull(reader[index])) { return default (T); } return (T)reader[index]; } public static T GetValueOrDefault<T>( this DbDataReader reader, string name) { if ( Convert .IsDBNull(reader[name])) { return default (T); } return (T)reader[name]; }
DataReader.GetValueOrDefault --> Nice Extension
04 September 09 12:14 PM
|
Shlomo
|
2 comment(s)
בעבר כתבתי את הפוסט הזה על Extension ל - DataReader - שיודע לייצר אובייקט מכל שורה ב - reader. כאן אני אראה עוד תוספת נחמדה ל - DataReader. הרבה פעמים אנחנו יכולים לקבל NULL מה - reader, ואנחנו חייבים לבדוק בכל פעם האם זה לא DBNull, בעזרת ה - Extension הבא, הקוד יהיה יותר קריא. (הראשון עבור int והשני עבור string) public static T GetValueOrDefault<T>( this DbDataReader reader, int index, T defaultValue) { if ( Convert .IsDBNull(reader[index])) { return defaultValue; } return (T)reader[index...
More Posts
Next page »