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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. wpf

wpf

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 2 כותבים 519 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E מנותק
    E מנותק
    edenbelosh
    כתב ב נערך לאחרונה על ידי dovid
    #1

    אני לומדת שנה שנייה במדעי המחשב ועושה פרוייקט בWPF ונקלתי בבעיה אני מוציאה מהקובץ נתונים בצורה הבאה וכשאני מגיעה למאפיין כתובת שעשיתי אותו class עיר רחוב ומספר בניין הוא לא נותן. איך אפשר לעשות את זה ? תודה מראש!!

    foreach (PropertyInfo item in typeof(BE.Tester).GetProperties())
    {
        TypeConverter typeConverter = TypeDescriptor.GetConverter(item.PropertyType);
        object convertValue = typeConverter.ConvertFromString(element.Element(item.Name).Value); 
        item.SetValue(tester, convertValue);
    }
    
    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #2

      קוד יפה, לא הבנתי אבל בדיוק מה מטרתו (מילוי מאפייני אובייקט לפי אלמנטים מקובץ XML?).
      מה זה element? מסמך XML?
      יש מצב לדוגמית מהקובץ ודוגמית מהclass?
      תוכלי לקצץ את כל המאפיינים חוץ מהבעייתי.

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

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

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

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

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

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

        תגובה 1 תגובה אחרונה
        2
        • E מנותק
          E מנותק
          edenbelosh
          כתב ב נערך לאחרונה על ידי dovid
          #4
          XElement testerRoot;
          string testerPath = @"testerXml.xml";
          
          
          XElement traineeRoot;
          string traineePath = @"traineeXml.xml";
          
          
          XElement testRoot;
          string testPath = @"testXml.xml";
          
          XElement configRoot;
          string configPath = @"configXml.xml";
          
          private static int testNum = 0;
          
          testerRoot = new XElement("testers");
          testerRoot.Save(testerPath);
          
          
          traineeRoot = new XElement("trainees");
          traineeRoot.Save(traineePath);
          
          
          testRoot = new XElement("tests");
          testRoot.Save(testPath);
          
          configRoot = new XElement("TestNum");
          configRoot.Add(new XElement("TestNum", testNum));
          configRoot.Save(configPath);
          
          if (predicat == null)
          {
              return from item in testerRoot.Elements()
                     select ConvertTester(item);
          }
          
          return from item in testerRoot.Elements()
                 let s = ConvertTester(item)
                 where predicat(s)
                 select s;
          
          foreach (PropertyInfo item in typeof(BE.Tester).GetProperties()) {
                          if (item.Name != "Adress")
                          TesterElement.Add(new XElement(item.Name, item.GetValue(tester, null)));
                          else
                          {
                              XElement city = new XElement("city", tester.TesterAdress.City);
                              XElement street = new XElement("street", tester.TesterAdress.Street);
                              XElement BuildingNum = new XElement("buildingNum", tester.TesterAdress.BuildingNum);
                              XElement address = new XElement("Adress",street,BuildingNum,city);
                              TesterElement.Add(address);
                          }
          

          זה בערך חלק מהקוד רק של הטסטר

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

            הבנתי.
            אי אפשר להכניס את הכתובת באוטומציה של מיפוי אוטומטי של שמות, צריך לטפל בה ידנית:

            var adress = new TesterAdressType();  //TesterAdressType replace with type of address...
            var el = element.Element("Adress");
            adress.City =  (string)el.Element("city").Value;
            adress.Street = (string)el.Element("street").Value;
            adress.BuildingNum = (string)el.Element("buildingNum").Value; //is string?
            tester.TesterAdress = adress;
            
            foreach (PropertyInfo item in typeof(BE.Tester).GetProperties())
            {
                if(item.Name == "TesterAdress") continue;
            
                TypeConverter typeConverter = TypeDescriptor.GetConverter(item.PropertyType);
                object convertValue = typeConverter.ConvertFromString(element.Element(item.Name).Value); 
                item.SetValue(tester, convertValue);
            }
            

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

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

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

            תגובה 1 תגובה אחרונה
            1
            • E מנותק
              E מנותק
              edenbelosh
              כתב ב נערך לאחרונה על ידי
              #6

              הוא רושם הפנייה לאובייקט לא הוגדרה למופע של אובייקט כשאני מגיעה לשורה adress.City = (string)el.Element("city").Value;

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

                @edenbelosh ובטוח הXML אליו את פונה נוצר על ידי הקוד שלך?

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

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

                תגובה 1 תגובה אחרונה
                0
                • E מנותק
                  E מנותק
                  edenbelosh
                  כתב ב נערך לאחרונה על ידי
                  #8

                  כשאני עושה את הכתובת בהערה הוא שומר והכל בסדר רק כשמגיע לכתובת הוא רושם הפנייה לאובייקט לא הוגדרה אולי בגלל הvar

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD dovid העביר נושא זה מ-תכנות ב-

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

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

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