4. ReadOnlyCollection

לפעמים אנחנו רוצים לחשוף <ICollection<T כי זה נוח (יש פונקציות Contains, Count וכו’).

הבעיה היא שיש גם פונקציות שאנחנו לא תמיד רוצים לחשוף כגון Add,Remove וכו’, כי זה מאפשר למשתמש מבחוץ לערוך לנו את הCollection.

הפתרון:

במקום

1
2
3
4
5
6
7
8
9
private List<string> m_Collection = new List<string>();
public ICollection<string> Collection
{
get
{
return m_Collection;
}
}

נכתוב

1
2
3
4
5
6
7
8
9
private List<string> m_Collection;
public ICollection<string> Collection
{
get
{
return new ReadOnlyCollection<string>(m_Collection);
}
}

חסרון:

ReadOnlyCollection מקבל בCtor שלו רק IList<T>.

שתף