Экспонировать IEnumerable<T>
свойство:
public IEnumerable<whatevertype> MyHashSet {
get {
return this.myHashSet;
}
}
Конечно, пользователь этого кода может привести это IEnumerable<T>
к HashSet<T>
и редактировать элементы, поэтому, чтобы быть в безопасности (при этом снижая производительность), вы можете сделать:
public IEnumerable<whatevertype> MyHashSet {
get {
return this.myHashSet.ToArray();
}
}
или
public IEnumerable<whatevertype> MyHashSet {
get {
foreach(var item in this.myHashSet) {
yield return item;
}
}
}
Более эффективный метод защиты, но менее удобный для вызывающего, - это вернуть IEnumerator<T>
:
public IEnumerator<whatevertype> GetMyHashSetEnumerator() {
return this.myHashSet.GetEnumerator();
}