A collection type similar to HashSet<T> into which advices can be injected dynamically.
Namespace: PostSharp.Patterns.Collections
Assembly: PostSharp.Patterns.Common.dll
Syntax
public class AdvisableHashSet<T> : DynamicallyAdvisableObject, ISerializable, IDeserializationCallback, ISet<T>, ICollection<T>, IEnumerable<T>, IDynamicallyAdvisableHashSet, IDynamicallyAdvisable, IQueryInterface, ICollection, IEnumerableType Parameters
| Name | Description |
|---|---|
| T | The type of elements in the collection. |
Remarks
The API of this class is compatible with the HashSet<T> class. It provides some additions, but preserves the same design and naming conventions.
Classes that derive from AdvisableHashSet<T> can add functionalities by overriding protected methods or by defining new public methods.
New public methods wrap their logic in a call of the ExecuteWithAdvices<TResult, TAction>(ObjectAccessLevel, ref TAction) method,
which applies boundary aspects. Public methods can access the data structure through protected methods, which have a name ending in Item, for example AddItem(T).
Public methods should not use other public methods of the class, because this may cause inconsistent invocation of advices and performance issues.
Use this class instead of HashSet<T> in the child properties of classes that use patterns such as Aggregatable, Recordable or threading models, which inject their behavior into advisable collections at run time.
A threading model synchronizes an advisable collection only after the collection is assigned to a child property of an object that has a threading model. The collection then uses the concurrency controller of this object. Before that, the collection is not thread-safe: do not access it from several threads at the same time, and do not modify it while another thread assigns it to its parent.
Constructors
| Name | Description |
|---|---|
| AdvisableHashSet() | Initializes a new instance of the AdvisableHashSet<T> class that is empty and uses the default equality comparer for the set type. |
| AdvisableHashSet(IEnumerable<T>) | Initializes a new instance of the AdvisableHashSet<T> class that uses the default equality comparer for the set type, contains elements copied from the specified collection, and has sufficient capacity to accommodate the number of elements copied. |
| AdvisableHashSet(IEnumerable<T>, IEqualityComparer<T>) | Initializes a new instance of the AdvisableHashSet<T> class that uses the specified equality comparer for the set type, contains elements copied from the specified collection, and has sufficient capacity to accommodate the number of elements copied. |
| AdvisableHashSet(IEqualityComparer<T>) | Initializes a new instance of the AdvisableHashSet<T> class that is empty and uses the specified equality comparer for the set type. |
Properties
| Name | Description |
|---|---|
| Comparer | Gets the IEqualityComparer<T> object that is used to determine equality for the values in the set. |
| Count |
Methods
| Name | Description |
|---|---|
| Add(T) | |
| AddItem(T) | Inserts an element into the underlying set. |
| ChangeManyItems(IList<T>, IList<T>) | Modifies the underlying set by adding and removing the specified items. |
| Clear() | |
| ClearItems() | Removes all elements from the underlying set. |
| Contains(T) | |
| CopyTo(T[]) | Copies the elements of an AdvisableHashSet<T> object to an array. |
| CopyTo(T[], int) | |
| CopyTo(T[], int, int) | Copies the specified number of elements of an AdvisableHashSet<T> object to an array, starting at the specified array index. |
| CreateSetComparer() | Returns an IEqualityComparer object that can be used for equality testing of a AdvisableHashSet<T> object. |
| ExceptWith(IEnumerable<T>) | |
| GetAdviceEnumerator() | Gets an AdviceEnumerator<T> for the ICollectionDynamicAdvice<T> interface. |
| GetEnumerator() | Returns an enumerator that iterates through the AdvisableHashSet<T>. |
| GetObjectData(SerializationInfo, StreamingContext) | |
| IntersectWith(IEnumerable<T>) | |
| IsProperSubsetOf(IEnumerable<T>) | |
| IsProperSupersetOf(IEnumerable<T>) | |
| IsSubsetOf(IEnumerable<T>) | |
| IsSupersetOf(IEnumerable<T>) | |
| OnDeserialization(object) | |
| Overlaps(IEnumerable<T>) | |
| Remove(T) | |
| RemoveItem(T) | Removes an element from the underlying collection. |
| RemoveWhere(Predicate<T>) | Removes all elements that match the conditions defined by the specified predicate from a HashSet<T> collection. |
| SetEquals(IEnumerable<T>) | |
| SymmetricExceptWith(IEnumerable<T>) | |
| TrimExcess() | Sets the capacity of an AdvisableHashSet<T> object to the actual number of elements it contains, rounded up to a nearby, implementation-specific value. |
| UnionWith(IEnumerable<T>) |