
NiceButton. בבנאי שלה מודפסת הודעה, ונערכת בדיקה פנימית (SecurityCheck), כמו בדיקת רישיון.public delegate void ClickActions();. זו חתימה שכל פונקציה שרוצים לרשום חייבת להתאים לה.+=. כשה-DLL מפעיל את ClickActions, כל הפונקציות שנרשמו מופעלות בזו אחר זו, גם הפונקציה הפנימית של הכפתור וגם הפונקציה של הלקוח. הלקוח יכול גם להוסיף כמה פונקציות.+=, אבל לא יכול להפעיל את האירוע בעצמו.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר כללי על Delegate Event» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב חברים אנחנו הולכים ללמוד היום על הדיליגייט ומה זה דיליגייט שזה מצביע לפונקציה ולמה צריך אותו והכי קל זה להגיע לצורך ליצור אותו ולמה צריך אותו אז בואו נתחיל לדמיין שאנחנו חברה שמוכרת כפתור יודעת לצייר כפתור מאוד מאוד יפה ולמכור אותו אז אנחנו רוצים ליצור dll מעין קובץ קוד חיצוני שנמכור ללקוחות שלנו אנחנו עושים פרויקט חדש קלאס קלאס חדש
למה קלאס ולא קונסול אפליקיישן ולא ווינדוס פורמס אנחנו רוצים רק ליצור dll שנמכור אותו לחברות אחרות שיקנו מאיתנו בטאנס כן פרקטיקיו בטאנס אוקיי אנחנו הולכים לייצר כפתורים וכמו שבווינדוס יש לכם כפתורים וחברה שרוצה כפתור יפה ומיוחד תוכל לקנות מאיתנו dll ולהשתמש בו הולכים לעשות את כל זה ביחד עכשיו אז אל תדאגו אתם עוד מעט הולכים ממש ממש להבין איך
עושים את זה ומה עושים וכולי טוב אז בואו נעשה פרקטיקיו בטאנס יפה מאוד אז אנחנו יוצרים פה למעשה קלאס כן קלאס נקרא לו אגלי בטאנס זה יהיה כפתור אחד כפתור מכוער נעשה עוד כפתור אחד שנקרא נייס בטאנס וכפתורים יפים בכלל אין לנו יופי אנחנו רוצים לעצור dll כזה וכשאנחנו נקמפל אותו כשאנחנו מקמפלים את הדבר הזה אם אתם עושים
open folder in windows explorer אתם תקבלו בסוף קובץ dll שאותו אתם נותנים ללקוח שלכם מוכרים אותו בכסף אנחנו הולכים למכור את זה ואז הוא אצלו בתוכנה יכול לעשות add reference ולהשתמש בdll שלי עוד דקה אתם רואים את זה יופי אז אנחנו רוצים ליצור כפתור ככה דרך אגב עובד כל הווינדוס כל הכפתורים של ווינדוס וכאלה דברים אנחנו עכשיו יוצרים לבד את הכפתור
ונתקדם טוב אז נעשה nice button קודם כל נעשה קונסטרקטור איך שאנחנו עושים מופע חדש אז הוא עושה לנו console right line nice button just created כמובן שחברה אמיתית תעשה כל מיני בדיקות האם יש לך רישיון ליצור אותו האם שילמת לנו כסף אולי עוד איזה שם בדיקות שצריך בזמן יצירה של הלוגיקה business
לוג'יק של החברה שמייצרת כפתורים. יופי אז אנחנו צריכים בעצם לעשות איזה שהם בדיקות בזמן שהכפתור נוצר לדוגמה לבדוק רישיון לצייר משהו לא יודע מה לעשות שם ואנחנו צריכים אירוע של קליק כן אנחנו צריכים פה בפאבליק אנחנו צריכים פאבליק כדי שהוא יוכל לראות ווייד לא צריך להחזיר כלום קליק אירוע של קליק שלא מקבל כלום ואומר console right line just
clicked כן אבל מה אנחנו רוצים לעשות פה איזשהו private function שמחזירה בול של security האם לדוגמה מותר לך ללחוץ על הכפתור על זה security check שתהיה לנו אפשרות להכניס איזשהן בדיקות שאין שום בעיות אבטחה ואפשר מותר ללחוץ על הכפתור בינתיים return true אני עושה ופה אני אכתוב my security checks my security
internal checks אוקיי, my security internal check, יפה מאוד. אז יש לנו בעצם, ואנחנו רוצים כמובן לעשות כזה דבר, ש-if security check, אם אתה עובר את הבדיקה, כן, אם הבדיקה מחזירה לך true, אז אנחנו מבצעים את הקוד הזה של just clicked.
ברור? יופי. בזמן היצירה של הקונסטרקטור אנחנו בעצם נותנים איזושהי הודעה ואיזושהי בדיקה, כן, איזושהי בדיקה עושים.
אחרי זה, בזמן הקליק אנחנו בודקים שה security check מתקיים ומדפיסים הודעה על המסך יפה מאוד ויצרנו את הדי.אל.אל עכשיו עשיתי כן עשיתי פה רייט קליק ריבילד יופי יופי יופי עכשיו אני לוקח את הדי.אל.אל הזה ומוכר אותו ללקוח כן אני לא נותן לו את הקוד הפתוח אני נותן אותו מקומפל ואז הוא יראה רק את כל מה שפאבליק כן כל מה
שפאבליק הוא זה בואו נעשה אתם יודעים מה אפילו כזה דבר נעשה פה משתנה נעשה פה משתנה כמה פעמים הוא נלחץ טוב עזבו עזבו הבנתם את העיקרון עכשיו אנחנו לוקחים את ה-DLL הזה ועושים סולושן חדש פרוג'קט חדש קונסול בטון קליינט זה מישהו שלקח וקנה מאיתנו את הכפתור הנפלא שעשינו
כן זה הלקוח הראשון שקנה יופי יופי יופי אז אנחנו מוסיפים פה רפרנס למעשה מפנים אותו לאין תראו הוא הופיע פה אתם רואים הוא הופיע פה הנה אתם יכולים לראות פה שהוא הופיע והנה אנחנו רואים פה את הכפתורים שלנו זה נקרא Object Explorer כן? אתם רואים?
כל מה שפאבליק רואים כל מה שפרייבט security check לא רואים אתם רואים security check אתם לא רואים פה יופי עשיתי דאבל קליק מי שכן זה דאבל קליק יופי אז קודם כל נעשה using כדי שלא נצטרך לרשום כל פעם את השם המלא שלו איך קראנו לו כבר שכחתי מה קראתי לו שמה פרקטי קיו בטאנס פרקטי קיו בטאנס נעשה לו using אחרת היינו צריכים לרשום כל פעם פרקטי קיו בטאנס וזה יופי
ואנחנו הולכים ליצור את הכפתור. אז אנחנו נתחיל ב-Consol Rightline, Rightline, M-Client 1, יפה, ועכשיו אנחנו רוצים ליצור מופע מה-Nice Button שלנו, כן?
Nice Button, אתם רואים, הוא רואה אותו, והוא כותב לי שזה Practical Buttons.Nice Button, אתם רואים, הוא רואה אותו, והלקוח קיבל רק DLL, והוא יכול להשתמש ב-DLL שלי עם כל הלוגיקה שכתבתי בפנים.
יופי, Nice Button 1, נקרא לו B1, VTN 1, בטן 1, שווה, נייס בטן 1, אופס, נראה לי עשינו טעות פה, שגיאת כתיב עשינו 00 ולא WT, יופי, יופי, יופי, יופי, ניו, כן, כמובן ניו, יופי, ניו בטן 1, יופי.
עכשיו שימו לב מה קורה, יש לנו מופע של כפתור, ואנחנו יכולים לעשות בטן 1, ואנחנו רואים פה את כל מה שפאבליק, ויש פה את הקליק שלנו, זה הקליק שאני ואתם כתבתם ביחד, נכון?
יפה מאוד. ואנחנו עושים קליק, ואחרי זה I'm client 1 again, בואו נעשה step 2, כן? I'm client step 2, בואו נעשה ככה, client step 2 ו-client step 1, אוקיי? זה יהיה לנו יותר ברור, אוקיי? client step 2 ו-client step 1, יופי.
בואו נריץ את התוכנה, תסתכלו מה קרה פה, הוא עשה את ה-client step 1, עשה nice button, just created, client step 2, אה, ו-just clicked, אתם רואים?
כי עשינו גם קליק, אוקיי? בואו נעשה פה ככה קודם יצירה אחרי זה קליק ואחרי זה אנד כן קליינט אנדד אני יודע מה נעשה אני יודע מה יופי קליינט אפליקיישן לא יודע גם לא צריך כלום כן לא משנה בקיצור סטייפ 1 סטייפ 2 וזה יופי אתם רואים מה קורה פה אתם רואים פה מה קורה שקודם כל סטייפ 1 אחרי זה הדלל שלנו מופעל ויוצר לנו מופע זרוק לנו
את השורה הזאתי אחרי זה הוא מריץ את השורה הזאת ואחרי זה בזמן הקליק הוא מפעיל את זה שוב. יופי, מה יקרה אם אני אעשה פה עוד קליק? אז הוא יפעיל פעמיים קליק.
אתם רואים? הוא עושה פעמיים קליק. עד כאן ברור. חבר'ה, עד כאן הכל ברור? יפה מאוד. עכשיו שימו לב לבעיה. הלקוח אומר, חמוד שלי.
זה שהכפתור שלך, אפשר ללחוץ עליו והוא הכי יפה בעולם, זה מצוין, אבל יש לי פה קוד שאני רוצה להפעיל אותו. קליינט כתב פה איזשהו static void my client logic קליינט לוג'יק איזשהו קוד שלו שהוא רוצה שהוא יופעל בזמן הקליק כן פונסול רייטליין מה שאנחנו עושים עכשיו הכל רייטליין כי אנחנו לומדים מסודות אבל בחברה אמיתית כל אחד יכניס את הלוגיקה שלו פונסול רייטליין
מיי קליינט אקשנס מיי קליינט אקשן און קליק הוא רוצה שזה יודפס לו זה מה שהוא רוצה שקורה פה קליק באמצע של הקליק באמצע הקוד או בסוף הקוד אצלך שמה זה יקרה אבל רק כשיש קליק הוא רוצה לעשות מעין פלאגינג, כמו פלאגינג, לקוד הקליק שלי.
הבנתם? עכשיו שאלה, איך אני עושה שהקוד שלי, הקליק שלי, ידע להפעיל את הקוד שלו? ואני בכלל מוכר לו dla לפני שהוא כתב את הקוד הזה.
אתם מבינים? איך בתוך הקליק שמה הוא ידע להגיע לפה כשהוא באמצע של הקליק? אני רוצה באמצע הקליק שיפנה לפונקציה של הלקוח, כמו פלאגינג כזה שהוא מכניס באמצע הזה.
בואו תראו, אולי אני אשחטט לכם את זה ויזואלית. דרך אגב התשובה לזה בלי דיליגייט זה בלתי אפשרי כן אבל בואו תסתכלו מה אני רוצה להגיע אני רוצה לעשות שורה של קוד עוד שורה של קוד עוד שורה של קוד באמצע של כל השורות קוד האלו אני קורא לפונקציה שנקראת קליק dll קליק זאת אומרת קליק בכלל חיצוני בזמן הקליק החיצוני
מה הוא הולך לעשות בזמן הקליק החיצוני זה שורות קוד כן מי שלא הבין זה dll זה dll dll חיצוני ומה שהוא עושה בזמן הקליק הוא עובר ל-DL החיצוני שלי, נכון?
זה מה שראינו. הוא עושה את הפונקציות, הוא מריץ את הקליק שלו, ואני רוצה פה באמצע הקליק, שיהיה פה, יחזור באמצע הקליק פוץ לקוד של הלקוח, כמו פלאגינג כזה, יבצע את הקוד בכלל של הלקוח, אחרי זה יחזור חזרה אליי, שימו לב מה אני רוצה,
באמצע הקוד שיחזור חזרה אליי, כי לקוח רוצה שזה יקרה באמצע של הקליק. יבצע עוד כמה שורות, ואחרי שהוא יסיים כבר את כל זה, לתוכנה הראשית של הלקוח זה פלאגין של הלקוח חוזר חזרה לפה הבנתם אם לא הבנתם אני מסביר שוב זה זה כמו איזשהו קאסטום קליק פרייבט קליק קאסטום קליק קליינט קליק אוקיי אז זה פלאגין
אני קורא לזה פלאגין איזשהו קוד שצריך להיכנס באמצע אז נקרא לזה קליינט קליק קליינט קליק קליינט קליק אקשן זה פעולות שהלקוח שלי ביקש שיתבצעו שהלקוח שלי ביקש שיתבצעו בזמן הקליק.
קליינט קליק. עכשיו, הוא לא רוצה שזה יתבצע בתוכנה הראשית, זה צריך להתבצע כמו פלאגין באמצע הקליק. זאת אומרת, ברגע שקורה אירוע של קליק, כשמישהו לוחץ על הכפתור, הוא מתחיל לרוץ ה-DLL שלי.
ברגע שה-DLL שלי מתחיל לרוץ, הוא באמצע של ה-DLL פונה ללקוח, מבצע את מה שהוא ביקש, חוזר חזרה, מסיים לעשות את מה שהוא צריך לעשות אצלי לפי הלוגיקה שלי, ואחרי שהוא סיים הכל הוא חוזר חזרה לקוד של הלקוח.
הבנתם? זה מה שאני רוצה לעשות. שאלה איך אני מכאן יודע להגיע לפה. מפה לפה אנחנו יודעים להגיע, זה בעצם רפרנס. כן? זה בעצם מה שעושה ה-DLL רפרנס.
אני יודע מפה לשלוח לכאן. השאלה איך אני בתוך ה-DLL יודע לפנות לקוד של הלקוח שלא קיים. זאת הבעיה, הרי זה עדיין לא קיים. אז איך אני, מה אני אכתוב אצלי?
מה אני אכתוב אצלי פה כדי שידע לפנות לשם? יופי זאת בדיוק הבעיה שאנחנו רוצים לפתור אותה אוקיי יפה מאוד אז איך אנחנו הולכים לפתור את הבעיה הזאתי יפה אנחנו הולכים לפתור אותה על ידי הדיליגייט דיליגייט זה מצביע לפונקציה והלקוח הולך להיות בעצם עוד דקה אתם תראו את זה אבל הבנתם את הלוגיקה עושים את הקוד קורא קליק מתבצע dll שלי וחוזר אבל אני רוצה באמצע אמצע של הדלל באמצע של הדלל
להפעיל את הקוד שלו יופי זה מה שאני רוצה אז מה אנחנו נעשה אז בואו אז בואו נעשה פה, נעשה פה עוד, נפתח אותו, נפתח אותו, עוד פעם, TQ buttons, אתם רואים עכשיו הקליק לא מבצע את הקוד של הלקוח, זאת השאלה, איך אני עכשיו לוקח ועושה קליינט לוג'יק, איך אני מפעיל את הפונקציה הזאתי, הרי פה אני לא יכול לעשות כזה דבר, נכון?
כי הוא לא יודע מי זה, הוא לא יודע מי זה קליינט לוג'יק, הוא שואל אותי מאיפה הבאת את זה, הוא לא יודע ששעה מאה יותר מאוחר יהיה קליינט לוג'יק, זה לא הגיוני, יופי.
אנחנו רוצים פה להפעיל את הקוד של הלקוח. בשביל זה יש לנו דיליגייט. דיליגייט הוא למעשה מצביע, ועוד דקה אתם תראו איך זה עובד. אז בואו נתחיל לעשות בעצם דיליגייט.
בואו נעשה דיליגייט. אוקיי. אז מתחילים מזה שאנחנו צריכים לעשות הכרזה על משתנה. הכרזה על משתנה דיליגייט.
ואז אנחנו מתחילים בדיליגייט. יופי. עכשיו אנחנו מעתיקים למעשה את הפונקציה שאנחנו רוצים לקרוא לה.
נקרא לזה void click אז כמו קליק כזה אוקיי כמו אירוע של קליק כמו חתימה של קליינט לוג'יק זו אותה חתימה אנחנו יוצרים מה אנחנו רוצים להחזיר ואיך אנחנו רוצים להחזיר את זה בואו תראו בואו נמשיך אז אנחנו עושים קופי בעצם ממש כאילו זה פונקציה תסתכלו איזה קטע דיליגייט הזה אני יוצר טייפ בשלב הזה אני יוצר טייפ שלי מהי דיליגייט טייפ שהטייפ הזה כולל מה
מחזירים ומה מקבלים בסוגריים זה למעשה יצרתי טייפ עכשיו בתוך הטייפ אני עושה מהטייפ שלי כמו שאתם עושים נכון אתם יודעים לעשות int שנייה שנייה אני אראה לכם עכשיו אחרי שיש לכם טייפ כמו שיש אינטג'ר כמו שיש סטרינד נכון כמו שיש אינטג'ר כמו שיש סטרינד כמו שיש
זה אז ככה יש גם שנייה כמו שיש יש אני בתוך קלאסקייט כמו שיש אינטג'ר a נכון ככה במקום אינטג'ר אני כותב את הטייפ שלי מי דיליגייט טייפ זה המצביע שלי לפונקציה ואני קורא לו קליק אקשנס יופי אותו דבר אני יכול לעשות עוד דיליגייט נניח כן
קליק אקשנס אני יכול לעשות דאבל קליק אקשנס דאבל קליק אם יהיה דאבל קליק על הכפתור או שיהיה לפט קליק על הכפתור או רייט קליק כל מיני דאבל קליק אקשנס אוקיי פה סינגל קליק אקשנס או רייט קליק אקשנס או לא משנה איזה שם פעולות שאתם רוצים כמו שאתם מכריזים על משתנה רגיל אינטג'ר סטרינג ככה אתם מכריזים על משתנה מסוג דיליגייט שזה
למעשה הטייפ שלי ולמה אני צריך ליצור בעצמי את הטייפ הזה ושימו לב אני יוצר אותו מחוץ לקלאס. המשתנה הזה הטייפ הזה הוא למעשה אני חייב ליצור אותו כי מייקרוסופט לא יודעים איזה חתימה אני ארצה ואיזה ערך אני רוצה להחזיר ועכשיו אנחנו נסתפק בינתיים בדיליגייט אחד ועכשיו אנחנו יכולים להפעיל אותו אנחנו מפעילים אותו כמו פונקציה רגילה וכל מי שרוצה נרשם
לשם שימו לב כל מי שרוצה נרשם לדוגמה אני יכול לעשות עוד פרייבט עוד פונקציה שלי שנקראת שלא מחזירה כלום שנקראת מיי קליק מיי קליק אקסטרה מיי קליק אקסטרה אקשנס אני רוצה עוד פעולות בזמן הקליק אכפת לכם שאני אעשה כמה פעולות משלי בזמן הקליק אני רוצה לעשות קונסול רייטליין אני רוצה לעשות עוד כמה פעולות אקסטרה
אקסטרה אקסטרה אקסטרה מה יש לי אקסטרה אקסטרה security אקסטרה security check או לא משנה אני לא יודע משהו נגמר לי הערה another internal click actions another internal click actions אני רוצה פה עוד כמה פעולות להכניס עכשיו אני ישר מגלה לכם שהיתרון של הסיפור הזה שהclick action הזה שזה הדיליגייט כן הדיליגייט אפשר יהיה אפשר יהיה להוסיף לו דברים לא רק מתוך
הפרוצדורה אלא גם מבחוץ תסתכלו אני עושה קליק אקשנס קורא קליק קליק אקשנס פלוס שווה פלוס שווה נהיו מה יש לו מיי דיליגי טייפ נכון מיי דיליגי טייפ בסוגריים זה דבר רגע יופי יופי יופי יופי תסתכלו מה עשינו תקשיבו אני יודע שזה מסובך תקשיבו טוב עשיתי פה פונקציות נוספות לבדיקה אני לוקח לדיליגייט שלי
ומוסיף לו פונקציה שיצביע עליה שיצביע עליה לפונקציה הזאת עוד דקה אתם תראו שגם קליינט מבחוץ יכול להוסיף לו ואז ברגע שהוא מצביע על כמה פונקציות ברגע שאני קורא לו הוא מפעיל את כל הפונקציות שהוא מצביע עליהן עוד פעם יצרתי טייפ משלי יצרתי משתנה משלי יצרתי משתנה משלי דרך אגב הוא חייב להיות פה פאבליק אחרת ההוא לא יראה אותו מבחוץ
אני מוסיף פה פאבליק כי אחרת הוא לא יראה אותו הלקוח לא יראה אותו משם מהdll החיצוני והdll והdelegate שלי שקוראים לו click actions אני לוקח ואומר תקשיב אתה תצביע לי על פונקציה שלי על הפונקציה של אקסטרה שימו לב מה היתרון הכי גדול של הסיפור הזה שכמו שכמו שהפונקציה הזאת נרשמה לדילגייט גם הפונקציה של הלקוח יכולה להירשם לדילגייט
מה זה מה זה מה זה אה צריך לשים פה public וגם פה חייבים לשים public דילגייט חייב להיות public אחרת הלקוחות מבחוץ לא יוכלו לראות אותו יופי ועכשיו כמו שפה נרשמתי כמו שהפונקציה הזאת נרשמה לדיליגייט הזה ככה גם הלקוח שלי זה הלקוח שלי יכול תסתכלו מה יקרה לפני שהוא לוחץ קליק הוא יכול להגיד תקשיב תרשום לי דיליגייט שלך גם את הפונקציה שלי תסתכלו
איזה יופי למה הוא לא רואה את זה אותו למה הוא לא רואה אותו תכף נראה באתן אחד נקודה הנה קליק אקשנס אתם רואים מהי דיליגייט שימו לב מה קורה עכשיו הלקוח תסתכלו מה קורה לקח ולפני הקליק עזבו את הקליק עכשיו לפני הקליק הוא הוסיף את הפונקציה שלו לדיליגייט שלי ברגע שהוא הוסיף את הפונקציה שלו לדיליגייט שלי ברגע שיקרה קליק ותרוץ פונקציית קליק בתוך dll הוא יבצע את איזה שהם בדיקות אבטחה
פנימיות הוא יבצע איזה שהם פעולות פנימיות כן וזה צריך חד פעמי זה צריך בזמן היצירה חד פעמי נעשה את זה אז בזמן הקליק הוא יעשה בדיקות אבטחה יעשה כל מיני בדיקות שלנו, ידפיס הודעה למסך אם צריך, יעשה עוד איזה שם ויפעיל את הדיליגייט.
ומה יש לנו בתוך הדיליגייט הזה? בתוך הדיליגייט הזה יש לנו את הפונקציה הפנימית שלנו שנרשמה בזמן היצירה וגם הפונקציות של הלקוח שהוא גם יכל להוסיף להם פונקציות כמו פלאגין באמצע וזה more last actions more last click action כן last click action first קליק אקשן אוקיי זאת אומרת אני מכניס את הקוד
שימו לב את הקוד של הלקוח באמצע הלוגיקה של הדי.אל.אל שלי אני נותן ללקוח להיות פלאגין אצלי וזה דבר מדהים אתם מבינים ואז אני יכול לעשות מעין כלי שלקוח יכול להכניס את הלוגיקה שלו באמצע עבודה איפה שאני מאפשר לו כמובן כן אני שולט על זה אז דיליגייט זה מצביע לפונקציה מצביע לפונקציה שאתה יכול להירשם אליה וברגע שאתה נרשם אליה זה מופעל גם הקוד הפנימי וגם הקוד החיצוני
בואו נעשה בילד קונטרול שיפט בי מי שרוצה אני עושה ריבילד כל פעם אני עושה ריבילד כדי שהדיאלל ישתנה הולך ללקוח שלי עושה לו גם ריבילד הנה אתם רואים מה היה לו סימן צהוב פה יופי מעביר לו את הדיאלל המעודכן ושימו לב מה יקרה ברגע שאני אצור אותו מתבצע פה הקוד הזה ואחרי זה אני מצפה באמצע הקליק שיתבצע פה האקשן
של הקליינט בואו תסתכלו הנה בואו תסתכלו בהתחלה היה Client Step 1, בואו נעשה שלב שלב. עכשיו בגלל שאנחנו פה בסביבה כזאת של דיבאג, אתם ישר תראו דברים קורים אצלכם ישר.
בחיים אמיתיים זה לא ככה, פה יש לנו חיים יחסית טובים. Client Step 1, שנייה, יופי. Client Step 1. אנחנו הדפסנו את השורה הראשונה במסך, עכשיו אנחנו פה, בואו נראה מה קורה כשאנחנו לוחצים Button.
כשאנחנו יוצרים Button הוא עבר, שימו לב, ל-DLL. אנחנו בתוך dll, עכשיו באמצעיות אתם לא תראו את הקוד המקורי של dll, זה בגלל שיש לנו את הקוד מקור, אבל בחברה אמיתית זה כאילו בשפת מכונה אפשר להגיד דבר כזה, כאילו קוד מקומפל בשפת מכונה, אז אתם לא יכולים לעבור על השורות של dll של מישהו אחר ולגנוב לו את הקוד מקור, אלא
אם כן זה open source כמו בלינוקס, יפה,