דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. האם יש דרך לקרוא לאובייקט ללא סוג?

האם יש דרך לקרוא לאובייקט ללא סוג?

מתוזמן נעוץ נעול הועבר ארכיון code613m
26 פוסטים 4 כותבים 1.2k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    כתב ב נערך לאחרונה על ידי
    #12

    @רחמים

    ההגיון אומר שכל דבר שהוא גנארי חייב לבדוק המון בדיקות תקינות, וחייב להיות גמיש וממילא הוא בוודאי הרבה איטי מאשר משהו שנבנה באופן יעודי.
    באיזה מילון הוא משתמש? גם אתה יכול להשתמש במילון?

    אתה צודק בהכל חוץ מהמילה "הרבה". יש ליופי של LINQ תקורה, אבל שולית.
    סוג המילון הוא Lookup (ממש דומה לDictionary). אתה יכול כמובן לראות: http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,581.
    לא הבנתי מה הכוונה האם גם אני יכול. אגב אם כבר ממשים לבד יש ודאי שיפורים לעשות אבל מבזבזים את הכח והזמן לבנות ייעודית במקומות זניחים לגמרי.

    פורסם במקור בפורום CODE613 ב06/09/2015 11:09 (+03:00)

    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

    בכל נושא אפשר ליצור קשר dovid@tchumim.com

    תגובה 1 תגובה אחרונה
    1
    • A מנותק
      A מנותק
      avr416
      כתב ב נערך לאחרונה על ידי
      #13

      @דוד ל.ט.

      אני הייתי יוצר מחלקה שיש לה שתי מאפיינים: תורם ותרומה.
      וכעת אני חושב שהכי פשוט זה להשתמש עם מחלקה קיימת, שמה Tuple. שימושה היא ליצור סט של מאפיינים ללא יצירת מחלקה מתאימה. אז ככה:

      public static ObservableCollection<Tuple<Donor, Donation>> listResult;
      var newlistDonors = from o in donatFilter
                           join d in AddTorem.donors on o.IdDonor equals d.Id
                           select Tuple.Create(o, d);
      
      listResult =  new ObservableCollection<Tuple<Donor, Donation>>(newlistDonors);
      

      טוב, התגברתי על העצלות :lol: וכתבתי מחלקה חדשה לגמרי, ואז ראיתי את ההודעה שלך :lol: :lol:
      בכל אופן גם אם אני משתמש במחלקה שלי וגם אם אני משתמש בtuple אני מקבל בשורה האחרונה את הודעת השגיאה הבאה:
      אין אפשרות לבצע המרה של אובייקט מסוג '<JoinIterator>d__14[Person.Donation,Person.Donor,System.Int32,System.Tuple2[Person.Donation,Person.Donor]]' לסוג 'System.Collections.ObjectModel.ObservableCollection1[System.Tuple2[Person.Donor,Person.Donation]]'.
      כשהשתמשתי במחלקה שלי כתבתי select new ואת שם המחלקה, וכבר שם קיבלתי את השגיאה הנ"ל...
      מה עושים????? :shock: :shock:
      ותודה רבה רבה על כל העזרה!!!!

      פורסם במקור בפורום CODE613 ב06/09/2015 11:16 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #14

        אתה טועה בבניית הObservableCollection.
        תראה איך כתבתי בשורה 6. ותראה איך אתה עשית.

        פורסם במקור בפורום CODE613 ב06/09/2015 11:23 (+03:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #15

          @avr416

          טוב, התגברתי על העצלות :lol: וכתבתי מחלקה חדשה לגמרי, ואז ראיתי את ההודעה שלך :lol: :lol:

          זה היומיום של מתכנת טוב...
          אני מכיר כאלה שלא כותבים שום דבר לחינם, ובגלל זה גם לא יוצא להם שוב דבר טוב.

          פורסם במקור בפורום CODE613 ב06/09/2015 11:24 (+03:00)

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          תגובה 1 תגובה אחרונה
          0
          • A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #16

            @דוד ל.ט.

            אתה טועה בבניית הObservableCollection.
            תראה איך כתבתי בשורה 6. ותראה איך אתה עשית.

            כבר שם הוא זרק לי את השגיאה בזמן הכתיבה ולכן ביצעתי המרה מפורשת...
            אבל זה לא עזר לי והוא זורק לי את החריג בזמן ריצה 😢 😢

            פורסם במקור בפורום CODE613 ב06/09/2015 11:26 (+03:00)

            תגובה 1 תגובה אחרונה
            0
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #17

              כתבתי כך:

              var newlistDonors = from o in donatFilter
                                                  join d in AddTorem.donors on o.IdDonor equals d.Id
                                                  select Tuple.Create(o, d);
              
                              listResult = new ObservableCollection<Tuple<Donor, Donation>>((ObservableCollection<Tuple<Donor, Donation>>)newlistDonors);
              

              פורסם במקור בפורום CODE613 ב06/09/2015 11:28 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #18

                @avr416

                טוב, התגברתי על העצלות :lol: וכתבתי מחלקה חדשה לגמרי, ואז ראיתי את ההודעה שלך :lol: :lol:

                אני מתנצל שלא שיתפתי אותך בטיפ נוסף פשוט מאוד (אני למדתי להשתמש בו לא מזמן):
                אתה משנה את הnew לnew XXX כשהXXX זה שם מחלקה שאתה בוחר שעדיין לא קיימת. כמובן שהשם נצבע באדום. אתה מקיש Ctrl+. בעוד הסמן על המילה. מופיע לך תפריט ואז לחץ אנטר. נוצרת מחלקה חדשה עם כל המאפיינים.. סילחה שהחמצתי מלומר לך זאת בהתחלה.

                פורסם במקור בפורום CODE613 ב06/09/2015 11:33 (+03:00)

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                3
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #19

                  @avr416

                  @דוד ל.ט.
                  אתה טועה בבניית הObservableCollection.

                  תראה איך כתבתי בשורה 6. ותראה איך אתה עשית.

                  כבר שם הוא זרק לי את השגיאה בזמן הכתיבה ולכן ביצעתי המרה מפורשת...
                  אבל זה לא עזר לי והוא זורק לי את החריג בזמן ריצה 😢 😢

                  הObservableCollection מקבל בבנאי אוסף מהסוג הגנרי שלו.
                  לא צריך לעשות המרה, וגם אי אפשר! ממתי אוסף הוא צאצא של ObservableCollection?! - קאסטינג זה להפוך מחלקה יורשת למחלקה מורישה. כמו לשנות Button של WPF לControl שזה מאבות אבותיו...

                  פורסם במקור בפורום CODE613 ב06/09/2015 11:36 (+03:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  1
                  • A מנותק
                    A מנותק
                    avr416
                    כתב ב נערך לאחרונה על ידי
                    #20

                    @דוד ל.ט.

                    אני מתנצל שלא שיתפתי אותך בטיפ נוסף פשוט מאוד (אני למדתי להשתמש בו לא מזמן):
                    אתה משנה את הnew לnew XXX כשהXXX זה שם מחלקה שאתה בוחר שעדיין לא קיימת. כמובן שהשם נצבע באדום. אתה מקיש Ctrl+. בעוד הסמן על המילה. מופיע לך תפריט ואז לחץ אנטר. נוצרת מחלקה חדשה עם כל המאפיינים.. סילחה שהחמצתי מלומר לך זאת בהתחלה.

                    אין לך מה להתנצל :smile: זה ממש ממש חזק!!!

                    @דוד ל.ט.

                    הObservableCollection מקבל בבנאי אוסף מהסוג הגנרי שלו.
                    לא צריך לעשות המרה, וגם אי אפשר! ממתי אוסף הוא צאצא של ObservableCollection?! - קאסטינג זה להפוך מחלקה יורשת למחלקה מורישה. כמו לשנות Button של WPF לControl שזה מאבות אבותיו...

                    החכמתי!! לא חשבתי שהמרה זה דווקא ממוריש ליורש...
                    בכל אופן בלא המרה הוא זורק לי את אותה השגיאה:
                    Argument 1: cannot convert from 'System.Collections.Generic.IEnumerable<System.Tuple<Person.Donation, Person.Donor>>' to 'System.Collections.Generic.List<System.Tuple<Person.Donor, Person.Donation>>'
                    כיצד אפשר להתגבר על כך?
                    ותודה רבה רבה על כל ההשקעה בעניית התשובות וההסברה!!

                    פורסם במקור בפורום CODE613 ב06/09/2015 15:45 (+03:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #21

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

                      public static ObservableCollection<Tuple<Donor, Donation>> listResult;
                      var newlistDonors = from o in donatFilter
                                           join d in AddTorem.donors on o.IdDonor equals d.Id
                                           select Tuple.Create(o, d);
                      
                      listResult =  new ObservableCollection<Tuple<Donor, Donation>>(newlistDonors);
                      

                      פורסם במקור בפורום CODE613 ב06/09/2015 16:10 (+03:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      0
                      • A מנותק
                        A מנותק
                        avr416
                        כתב ב נערך לאחרונה על ידי
                        #22

                        לא...
                        זה מחזיר את אותה שגיאה שבהודעה הקודמת...
                        הפונקציה של החיפוש מחזירה ערך גנרי מסוג IEnumrable
                        ולכן הוא מציג הודעת שגיאה שהוא לא יכול להמיר ערך כזה לערך מסוג list (דהיינו אוברסלברקולקשיין...)

                        פורסם במקור בפורום CODE613 ב06/09/2015 16:18 (+03:00)

                        תגובה 1 תגובה אחרונה
                        0
                        • A מנותק
                          A מנותק
                          avr416
                          כתב ב נערך לאחרונה על ידי
                          #23

                          זה מוזר.. כי donatFilter זהו ליסט מסוג אובסרבייבל ואין לו בעיה לקבל לתוכו את התוצאות של פונקציית החיפוש שהיא מחזירה ערך מסוג IEnumerable.
                          אבל עכשיו כשאני משתמש בlinq הוא לא מוכן לקחת את המשתנה שנוצר מסוג IEnumerable ולשים אותו בתוך משתנה מסוג observable..

                          פורסם במקור בפורום CODE613 ב06/09/2015 16:30 (+03:00)

                          תגובה 1 תגובה אחרונה
                          0
                          • dovidD מנותק
                            dovidD מנותק
                            dovid ניהול
                            כתב ב נערך לאחרונה על ידי
                            #24

                            @avr416

                            זה מוזר.. כי donatFilter זהו ליסט מסוג אובסרבייבל ואין לו בעיה לקבל לתוכו את התוצאות של פונקציית החיפוש שהיא מחזירה ערך מסוג IEnumerable.

                            לא יכול להיות.
                            וגם לא הבנתי מה קורה שם אצלך, הקוד שנתתי לך תקין למיטב הבנתי.
                            ותבין כשאתה עושה משתנה מסוג IEnumerble אתה יכול לשים בפנים כל קולקשן כמעט. אבל להפיך, סוג מסויים של קולקשיין לא יכול לקבל IEnumerble לתוכו.

                            פורסם במקור בפורום CODE613 ב06/09/2015 17:04 (+03:00)

                            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                            בכל נושא אפשר ליצור קשר dovid@tchumim.com

                            תגובה 1 תגובה אחרונה
                            0
                            • A מנותק
                              A מנותק
                              avr416
                              כתב ב נערך לאחרונה על ידי
                              #25

                              @דוד ל.ט.

                              @avr416
                              זה מוזר.. כי donatFilter זהו ליסט מסוג אובסרבייבל ואין לו בעיה לקבל לתוכו את התוצאות של פונקציית החיפוש שהיא מחזירה ערך מסוג IEnumerable.

                              לא יכול להיות.
                              וגם לא הבנתי מה קורה שם אצלך, הקוד שנתתי לך תקין למיטב הבנתי.
                              ותבין כשאתה עושה משתנה מסוג IEnumerble אתה יכול לשים בפנים כל קולקשן כמעט. אבל להפיך, סוג מסויים של קולקשיין לא יכול לקבל IEnumerble לתוכו.

                              לא יודע מה לומר..
                              אולי המחשב שלי השתגע, או שאני השתגעתי :shock:
                              שלחתי לך את הקוד של הפרוייקט בפרטי, אם יש לך כח/זמן/יכולת אשמח אם תציץ בו ותגיד לי מה הבעיה..

                              פורסם במקור בפורום CODE613 ב06/09/2015 20:28 (+03:00)

                              תגובה 1 תגובה אחרונה
                              0
                              • A מנותק
                                A מנותק
                                avr416
                                כתב ב נערך לאחרונה על ידי
                                #26

                                הבעיה הייתה הסדר של האובייקטים בTuple.
                                תודה רבה לדוד ל.ט. על ההשקעה בפתרון הבעיה ובכלל בשיפור הקוד של המחלקה.
                                אשרינו שזכינו :smile:

                                פורסם במקור בפורום CODE613 ב07/09/2015 20:45 (+03:00)

                                תגובה 1 תגובה אחרונה
                                1

                                • 1
                                • 2
                                בא תתחבר לדף היומי!
                                • התחברות

                                • אין לך חשבון עדיין? הרשמה

                                • התחברו או הירשמו כדי לחפש.
                                • פוסט ראשון
                                  פוסט אחרון
                                0
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום