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
»
C#
(
RSS
)
Accelerator
AddIn
ADO
Ajax
Anonymous Methods
ashx
ASP
asp net
Asp.Net
asp.net 4.0
Asp.Net Controls
Attribute
C# 4.0
Code Plex
config
Context Menu
CSS
Culture
database
DataReader
DataTable
Delegate
DEV
dynamic
EF
Encoding
Entity Framework
Events
Exchange Rate
Expression Tree
Extension Method
FTP
Generic
Global.asax
html
HttpHandler
HttpModule
IE8
IIS
Inline Code
Internet Explorer
internet Explorer 8
JavaScript
JSON
Lambda Expression
Linq
Membership
Mouse Event
Named Parameters
Nullable
OFFICE
Optional Parameters
Oracle
Performance
PostBack
Publish
reflection
Reflector
Resource
Script Manger
Search Provider
Seesion
Serialization
Session
SQL Server
Static
stream
Test method
Threading
TreeView
UICulture
UnitTest
User Control
UTF-8
Validators
VB.NET
Visual Studio
VS2010
VSTO
Web
Web Service
WebApplication
WebMethod
WebService
Windows
WinForms
XMLHTTP
קוד נכון
תפוז
Exception handling in application
05 December 11 09:40 AM
|
Shlomo
|
1 comment(s)
טיפול נכון בשגיאות הוא אחד הדברים המאתגרים בפיתוח אפליקציות, לדעתי אחד הדברים השגויים לעשות זה לכתוב בכל קטע קוד try, catch בלי לעשות כלום בקטע ה - catch רק כדי לבלום את התרסקות האפליקצייה. הסיבה שהגישה הזו לא נכונה לדעתי, היא ש"טיפול" מסוג זה (כלומר לא לטפל רק להתעלם) יגרום בהכרח להתרסקות האפליקצייה במקום אחר מכיוון שאם קוד מסויים התרסק ולא עשה את העבודה כמו שצריך סביר להניח שקוד אחר המבוסס על הקוד שהתרסק לא יעבוד כמו שצריך, ובסוף התהליך כשנתרסק לא נדע את הסיבה האמיתית להתרסקות האפליקציה...
Exception Message Box
29 November 11 11:45 AM
|
Shlomo
|
6 comment(s)
מי לא כתב את הקוד הבא: try { } catch ( Exception ex) { MessageBox .Show(ex.Message); } ובכלל הצגת הודעות באפליקציות חלונאיות תתבצע הרבה פעמים בעזרת MessageBox. מתברר (משהו יחסית ישן) שהחברה של sql server פתחו MessageBox משלהם - בטח ראיתם מתי שהוא את החלון הבא: (אם עבדתם עם Sql Server Managment Studio) לחלון הזה יש כמה פיצ'רים מאוד נחמדים, ראשית הוא נראה הרבה יותר טוב מה - MessageBox הסטנדרטי, בנוסף יש בתחתית החלון אפשרות להעתקת הודעת השגיאה ולחצן נוסף להצגת הפרטים הנוספים: כדי שתוכלו להשתמש בזה...
הפעלת 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 ))); } כדי לחסוך קצת זמן ולכתוב...
List with main item
09 October 11 10:51 AM
|
Shlomo
| with
no comments
הרבה פעמים יש לנו List של אובייקטים שאחד מהם אמור להיות האובייקט הראשי, לדוגמא רשימת טלפונים, רשימת אנשי קשר וכדומה. כדי לתמוך בזה בקלות בלי להצטרך בכל פעם לכתוב פונקצייה המחזירה את האובייקט הראשי כתבתי את הקוד הבא: public interface IItemWithMain { bool IsMain { get ; set ; } } public class ListWithMain <T> : List <T> where T : IItemWithMain { public T MainItem { get { return this .FirstOrDefault(x => x.IsMain); } set { var mainItem = MainItem; if (mainItem != null ) { mainItem.IsMain...
כתיבה למאפיינים של תמונה מקוד
21 June 11 12:15 PM
|
Shlomo
| with
no comments
לקבצי תמונה יש במאפיינים שלהם טאב שנקרא Details ובו מידע אודות התמונה (למשל הערות וכו'). כדי לכתוב ולקורא משם נתונים מקוד ניתן להוריד את הספרייה הזו אבל במידה וכל מה שאתם צריכים זה לכתוב למאפיין אחד תוכלו לכתוב את הקוד הבא. אנחנו משתמשים במחלקת PropertyItem ומשתמשים בפונקציות GetPropertyItem , SetPropertyItem של Image. Image img = Image .FromFile(imageFilePath); PropertyItem item = img.GetPropertyItem(0X9C9C); string value = Encoding .Unicode.GetString(item.Value); item.Value = Encoding .Unicode...
Attach web page to email
09 June 11 09:35 PM
|
Shlomo
|
3 comment(s)
אתם מכירים את זה שלבוסים יש לפעמים דרישות מוזרות, קורה לכולם לא ? קחו למשל את הדרישה הבאה. לשלוח מייל כלשהו ולצרף למייל את תוכן הדף כפי שהוא עם כל הפרטים שהמשתמש כתב, כלומר - סוג של Print Screen. אבל היות שבוסים הם בוסים, ואם אחרי שמתווכחים איתם על המוזרות שבדרישה שלהם עדיין הם מתעקשים אז צריך לבצע את הבקשות שלהם. הדרך לעשות זאת היא לא מסובכת. (בדוגמא כאן אני יוצא מתוך הנחה שאתם מכירים כיצד שולחים מיילים מקוד) ראשית צריך לקבל את קוד ה - html הסופי, ואת זה ניתן לקבל במתודה render StringBuilder sb...
boxing - unboxing
24 May 11 11:41 AM
|
Shlomo
|
2 comment(s)
בתפוז עלתה השאלה, מהו boxing - להלן הסבר בסיסי. בעולם ה - NET המשתנים מחולקים לשני סוגים, אלה שנקראים value type ואלה שנקראים reference type, (נקרא להם val, ref בהתאמה) ההבדל המרכזי ביניהם הוא היכן הם ממוקמים בזיכרון כשמגדירים אותם, ה - val ממוקם במקום שנקרא stack, שנניח נראה ככה (לא בדיוק) name type value i int 10 c12 char f לעומת זאת האובייקטים מסוג ref ממוקמים במקום אחר הנקרא heap כשהגישה אליו היא דרך מצביע מה - stack i int 10 c12 char f p1 Perons 23F2A (address of p1 data) עכשיו נעבור לרגע לנקודה...
Collection Initializers for custom object
12 May 11 11:27 AM
|
Shlomo
| with
no comments
אחד הפיצ'רים הנחמדים שנכנסו ב - C# 3.0 הוא Collection Initializers. עד C# 3.0 יכולנו לכתוב קוד כזה: int [] arr = new int [] { 1, 2, 3, 34 }; מ - C# 3.0 אפשר גם לכתוב עבור Collections List < int > list = new List < int >() { 1, 2, 3, 34 }; Dictionary < string , int > dic = new Dictionary < string , int >() { { "a" , 1}, { "b" , 2}, { "c" , 3}, { "d" , 4}, }; שזה באמת נחמד. אבל יש דבר נוסף שטוב להכיר, מסתבר שכל אובייקט שמממש את ICollection<T...
yield
26 April 11 10:39 AM
|
Shlomo
|
3 comment(s)
כמו שהבטחתי בפוסט הקודם אני אראה דרך קצרה יותר לממש את IEnumerable ללא מימוש עצמאי של IEnumerator בעזרת yield. ראשית נראה את הדוגמא ואז את ההסברים: הנה המחלקה מהפוסט הקודם: class PersonManager : IEnumerable { private List < Person > _persons; public PersonManager() { _persons = new List < Person >(); } public IEnumerator GetEnumerator() { } } כעת נממש את המתודה בעזרת yield. public IEnumerator GetEnumerator() { foreach ( var item in _persons) { yield return item; } } למעשה אפשר פשוט להשתמש...
foreach
21 April 11 06:53 AM
|
Shlomo
|
8 comment(s)
מה זה foreach וכיצד מממשים אותו. לאלו שנכנסים לעולם הפיתוח ולומדים #C, כשמגיעים ללולאות לומדים שיש כמה סוגים, כשהנפוצים הם, for ו - foreach, ההסבר ללולאת for הוא די פשוט, לדוגמא: int [] arr = { 1, 2, 3, 4, 5 }; for ( var i = 0; i < arr.Length; i++) { Console .WriteLine(arr[i]; } מבצעים את שורת הקוד שבתוף גוף הלולאה כגודל המערך ובכל פעם מדפיסים מספר אחד מתוך המערך. אותה תוצאה בתחביר foreach foreach ( int item in arr) { Console .WriteLine(item); } איכשהו המשתנה item יהיה כל פעם הערך הבא במערך, ובפוסט...
Aggregate
18 March 11 02:36 AM
|
Shlomo
|
3 comment(s)
שימוש נחמד ב - Aggregate של LINQ זה היכולת לחבר מערך כלשהו למחרוזת אחת המופרדת עם פסיקים (עבור שאילתת in). לדוגמא: int [] arr = { 1, 2, 3, 4, 5, 6 }; string s = arr.Select(x => x.ToString()).Aggregate< string >((x, y) => x + "," + y); יחזיר: "1,2,3,4,5,6" המשתנה x יכיל בכל סיבוב של הלולאה את הערכים הקודמים ואילו המשתנה y יכיל כל פעם את המשתנה הנוכחי. אפשר להריץ את הקוד הבא כדי להווכח בכך: string s = arr.Select(x => x.ToString()).Aggregate< string >((x, y)...
propdm - snippet for a property with DataMember Attribute
17 March 11 07:25 PM
|
Shlomo
| with
no comments
אחד ה - snippets המוכרים ביותר הוא prop שזה קיצור דרך ליצירת automatic property. אם תכתבו prop ותלחצו פעמיים על טאב ייוצר הקוד הבא: public int MyProperty { get ; set ; } אני כותב הרבה מחלקות עבור wcf ואני מעדיף לשים את ה - DataMember על המאפיינים אפילו שלא חייבים, כדי לקצר את התהליך יצרתי את ה - snippet שתוכלו להוריד אותו מכאן, לאחר מכן ייבאו אותו בעזרת ה - Code Snipped Manager תחת תפריט Tools, ולאחר מכן כתיבה של propdm ייוצר הקוד הבא: [ DataMember ] public int MyProperty { get ; set ; }
How to get the return value of main
12 January 11 01:35 PM
|
Shlomo
| with
no comments
מתודת Main יכולה להחזיר או void או int, בדרך כלל היא תהיה void אבל לפעמים נרצה לכתוב אפליקציות שיחזירו ערך כלשהו (בדרך כלל האם הצליח או מספר שגיאה), בפוסט הזה נראה כיצד אפשר לקרוא את הערך שחוזר מתוך אותם שפליקציות שמחזירות int. לצורך הדוגמא נניח שיש לנו Console Application אחד שמקבל שלושה פרמטרים (שני מספרים וסימן החישוב) ומחזיר את התוצאה. הקוד יראה כך: static int Main( string [] args) { int num1 = int .Parse(args[0]); int num2 = int .Parse(args[1]); int res = 0; switch (args[2]) { case "+"...
הוספה של פונט מקוד - חלק שני
04 January 11 02:19 PM
|
Shlomo
|
1 comment(s)
לא מזמן פרסמתי פוסט - כיצד להוסיף פונט מקוד . מסתבר שהחברה מפרוייקט אתגר לא נחים - וכרגע הם רוצים להוסיף את הפונט כ - Embedded Resource (כדי שלא יצטרכו להעתיק את הפונט כל פעם יחד עם קובץ ה - exe) השלב הראשון הוא די פשוט, יש להוסיף את קובץ הפונט ל - Resources. השאלה הנשאלת כעת: כיצד להוסיף את הפונט, מסתבר שיש מתודה בשם AddMemoryFont, אבל למרבה הצער זה מקבל IntPtr ולכן צריך לכתוב את הקוד הבא: IntPtr pointer = Marshal .AllocHGlobal( Resources .ahronbd.Length); Marshal .Copy( Resources .ahronbd, 0, pointer...
More Posts
Next page »