DCSIMG
List with main item - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

List with main item

 

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

public interface IItemWithMain

{

    bool IsMain { get; set; }

}

 

public class ListWithMain<T> : List<T> where T : IItemWithMain

{

    public T MainItem

    {

        get

        {

            return this.FirstOrDefault(x => x.IsMain);

        }

        set

        {

            var mainItem = MainItem;

            if (mainItem != null)

            {

                mainItem.IsMain = false;

            }

 

            value.IsMain = true;

        }

    }

}

 

public class Person : IItemWithMain

{

    public int Id { get; set; }

    public bool IsMain { get; set; }

}

 
 
כעת השימוש בקוד הזה יהיה פשוט ביותר
 

static void Main(string[] args)

{

    ListWithMain<Person> list = new ListWithMain<Person>();

    list.Add(new Person() { Id = 1 });

    list.Add(new Person() { Id = 2, IsMain = true });

    list.Add(new Person() { Id = 3 });

 

    Person p = list.MainItem;

    list.MainItem = list.First(x => x.Id == 1);

}

 
אפשר לראות שאפשר בקלות להוסיף אלמנטים לרשימה, לקבל את הרכיב שמוגדר כראשי, ולשנות את הלאמנט הראשי.
פורסם: Oct 09 2011, 10:51 AM by Shlomo | with no comments
תגים:,
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 8 and 7 and type the answer here:


Enter the numbers above: