לאיפה נעלמו הפונקציות

21 בנובמבר 2008

תגיות:
6 תגובות


בוקר טוב.


לא מזמן רציתי לתת פוקוס ל- TextBox, זכרתי שיש פונקציה שנקראת Focus,


התחלתי לחפש את הפונקציה, ולא מצאתי אותה, אז כתבתי בעצמי txt.Focus, והקוד התקמפל.


לחצתי על F12, והגעתי לפונקציה שנמצאת ב Control ומוגדרת כ public, ואז ראיתי את אחד מהדברים היותר מוזרים שקיימים ב #C, על הפונקציה יש את ה Attribute הבא:





 1     [EditorBrowsable(EditorBrowsableState.Advanced)]


 2     public bool Focus();



המשמעות של הנ"ל, זה – שאפילו שהפונקציה מוגדרת כ public, וכל אחד יכול להשתמש בה, אבל ב intellisense יראו רק המשתמשים שהגדירו את עצמם כמתקדמים.


כדי להגדיר את עצמכם כמתקדמים:


Tools->Options->TextEditor->C#->Hide advance members


כשתורידו את הסימון, ה-intellisense יתחיל להראות לכם את כל מה שמוגדר כ Advance.


הבעייה שיש גם פונקציות שמוגדרות עם Never, וזה אומר שלא תראו את הפונקציה ב- intellisense, אבל אם תשתמשו בפונקציה זה יעבוד,


באופן אישי שרפתי שלוש שעות בחיפוש של איזה פונקציה נידחת שנקראת ApplySort, של BindingSource, שמוגדרת בצורה הבאה:




  1    [EditorBrowsable(EditorBrowsableState.Never)]


  2    public virtual void ApplySort(ListSortDescriptionCollection sorts);



היות שזה מוגדר כ- Never, לא היה לי שמץ של סיכוי לנחש שהפונקצייה קיימת.


 


אם מישהו יכול להסביר לי את הרציונל של ה Attribute, אודה לו מאוד, שימו לב שזה קיים רק ב #C,


אני לא מבין את ההגיון, כי או שפונקציה מוגדרת כ public או שלא, אני לא מצליח להבין מה המשמעות של להסתיר פונקציה דרך ה – intellisense.


 


אז שיהיה לכולם שבת שלום, ובהצלחה בחיפוש אחרי פונקציות שמוגדרות עם Never

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

6 תגובות

  1. יצחק גוטויליג23 בנובמבר 2008 ב 4:59

    כעקרון, ב C# המאפיין Hide advance members ברירת המחדל שלו היא false.

    היכולת הזו, להסתיר מאפיינים, נוצרה בשביל VB, שם יש חלוקה בין שתי הרמות.

    הגב
  2. יצחק גוטויליג23 בנובמבר 2008 ב 5:19

    In C# Hide advance members is false by default.
    The ability to hide members is for VB where the intellisense dialog is separated between regular and advanced membrs

    הגב
  3. Shlomo23 בנובמבר 2008 ב 6:30

    what with the "Never" option ?

    הגב
  4. alex.kom7 בינואר 2009 ב 16:28

    יש אפשרות שבכל זאת יוצגו פונקציות שמוגדרות EditorBrowsableState.Never בVS?

    היום גם אני שרפתי איזה 3 שעות על דבר כזה

    הגב