Post­Sharp Documentation / API Reference / Post­Sharp.​Patterns.​Collections Namespace / Advisable­Hash­Set(T) Class

AdvisableHashSet<T> Class

A collection type similar to HashSet<T> into which advices can be injected dynamically.
Inheritance Hierarchy

Namespace:  PostSharp.Patterns.Collections
Assembly:  PostSharp.Patterns.Common (in PostSharp.Patterns.Common.dll) Version: (
public class AdvisableHashSet<T> : DynamicallyAdvisableObject, 
	ISet<T>, ICollection<T>, IEnumerable<T>, IEnumerable, IQueryInterface, 

Type Parameters

The type of elements in the collection

The AdvisableHashSet<T> type exposes the following members.

Public propertyComparer
Gets the IEqualityComparer<T> object that is used to determine equality for the values in the set.
Public propertyCount
Gets the number of elements contained in the ICollection<T>.
Public methodAdd
Adds an element to the current set and returns a value to indicate if the element was successfully added.
Protected methodAddItem
Inserts an element into the underlying set.
Protected methodChangeManyItems
Modifies the underlying set by adding and removing the specified items.
Public methodClear
Removes all items from the ICollection<T>.
Protected methodClearItems
Removes all elements from the underlying set.
Public methodContains
Determines whether the ICollection<T> contains a specific value.
Public methodCopyTo(T[])
Copies the elements of an AdvisableHashSet<T> object to an array.
Public methodCopyTo(T[], Int32)
Copies the elements of the ICollection<T> to an Array, starting at a particular Array index.
Public methodCopyTo(T[], Int32, Int32)
Copies the specified number of elements of an AdvisableHashSet<T> object to an array, starting at the specified array index.
Public methodStatic memberCreateSetComparer
Returns an IEqualityComparer object that can be used for equality testing of a AdvisableHashSet<T> object.
Public methodExceptWith
Removes all elements in the specified collection from the current set.
Protected methodExecuteWithAdvices<TResult, TAction>
Executes an action wrapped by all custom advices added to the current object.
(Inherited from DynamicallyAdvisableObject.)
Public methodGetEnumerator
Returns an enumerator that iterates through the AdvisableHashSet<T>.
Public methodGetObjectData
Populates a SerializationInfo with the data needed to serialize the target object.
(Overrides DynamicallyAdvisableObject.GetObjectData(SerializationInfo, StreamingContext).)
Public methodIntersectWith
Modifies the current set so that it contains only elements that are also in a specified collection.
Public methodIsProperSubsetOf
Determines whether the current set is a proper (strict) subset of a specified collection.
Public methodIsProperSupersetOf
Determines whether the current set is a proper (strict) superset of a specified collection.
Public methodIsSubsetOf
Determines whether a set is a subset of a specified collection.
Public methodIsSupersetOf
Determines whether the current set is a superset of a specified collection.
Public methodOnDeserialization
Runs when the entire object graph has been deserialized.
(Overrides DynamicallyAdvisableObject.OnDeserialization(Object).)
Public methodOverlaps
Determines whether the current set overlaps with the specified collection.
Public methodRemove
Removes the first occurrence of a specific object from the ICollection<T>.
Protected methodRemoveItem
Removes an element from the underlying collection.
Public methodRemoveWhere
Removes all elements that match the conditions defined by the specified predicate from a HashSet<T> collection.
Public methodSetEquals
Determines whether the current set and the specified collection contain the same elements.
Public methodSymmetricExceptWith
Modifies the current set so that it contains only elements that are present either in the current set or in the specified collection, but not both.
Public methodTrimExcess
Sets the capacity of a AdvisableHashSet<T> object to the actual number of elements it contains, rounded up to a nearby, implementation-specific value.
Public methodUnionWith
Modifies the current set so that it contains all elements that are present in the current set, in the specified collection, or in both.
Extension Methods
Public Extension MethodQueryInterface<T>
Gets the implementation of a specified interface for the specified object.
(Defined by QueryInterfaceExtensions.)
Public Extension MethodToAdvisableCollection<T>
Converts an IEnumerable<T> into an AdvisableCollection<T>.
(Defined by Extensions.)
Public Extension MethodToAdvisableDictionary<T, TKey, TValue>
Converts an IEnumerable<T> into a AdvisableDictionary<TKey, TValue> given a method returning the item key and a method returning the item value.
(Defined by Extensions.)
Public Extension MethodToAdvisableHashSet<T>
Converts an IEnumerable<T> into an AdvisableHashSet<T>.
(Defined by Extensions.)

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 HashSet<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, TAction) method, which applies boundary aspects. Public methods can access the data structure thanks to protected methods, which have a name ending in Item, for instance AddItem(T). Public methods should not use other public methods of the class, as it may cause inconsistent invocation of advises and performance issues.

See Also