יום חמישי, 8 בינואר 2015

הוספת ערכים למחלקה בלולאת Foreach

נגדיר מחלקה פשוטה:
public master()
    { }

    public int Id { get; set; }
    public string Title { get; set; }
עכשיו נניח אנחנו רוצים ליצור מופע למחלקה ולהכניס ערכים.
פשוט:
master MASTER = new master();
MASTER.Id = 1;
MASTER.Title = "blabla";

במידה וקיבלנו אובייקט אחרnew_MASTER שגם מכיל את המאפיינים ID, Title. נוכל לעשות השוואה בין המופעים, ולעדכן את הערכים.
MASTER.Id = new_MASTER.Id;
MASTER.Title = new_MASTER.Title;

כל זה מקסים, כאשר: 1. יש לי קצת ערכים 2. אני יודע מהם. אך במידה וקיבלתי שתי מחלקות גדולות לא ייתכן לכתוב:
 שורה א שווה לשורה א במופע החדש, שורה ב שווה לשורה ב במופע החדש. וגם במידה ולא ידוע לי המאפיינים של המחלקה, אז מה נכתוב? 
MASTER.??? = ?


בשביל לבצע השמה של מחלקה לתוך מחלקה נשתמש בלולאת foreach שתעבור על כל המחלקה, ותקבל כל שם מאפיין בנפרד, ותבצע השמה לתוך המאפיין בתוך המחלקה הראשית:


    Type type = MASTER.GetType();
    foreach (var item in new_MASTER.GetDynamicMemberNames())
    {
        System.Reflection.PropertyInfo prop = type.GetProperty(item); //name item
        prop.SetValue(MASTER, new_MASTER[item], null); // value item to MASTER
     }


אין תגובות:

הוסף רשומת תגובה