Open sandboxFocus

Class MulticastAspect

A base class that can be used to build aspects that mimic PostSharp attribute multicasting. This class implements multicasting from the assembly- or type-level custom attributes. Implementations of this class must provide the other implementations of the IAspect<T> generic interface for the final type of declarations.

Namespace: Metalama.Extensions.Multicast
Assembly: Metalama.Extensions.Multicast.dll
Syntax
public abstract class MulticastAspect : Aspect, IMulticastAttribute, IAspect<ICompilation>, IEligible<ICompilation>, IAspect<INamedType>, IAspect, ICompileTimeSerializable, ITemplateProvider, IEligible<INamedType>
Remarks

This class serves as the foundation for aspects that support PostSharp-style multicasting, allowing aspects to be applied at the assembly or type level and automatically cascade to matching members based on filtering criteria defined through IMulticastAttribute properties.

Derived classes should implement IAspect<T> for the specific target declaration types they want to support (e.g., IMethod, IProperty, IField).

For an example implementation, see the source code of OverrideMethodMulticastAspect at https://github.com/postsharp/Metalama.Extensions/blob/HEAD/src/Metalama.Extensions.Multicast/OverrideMethodMulticastAspect.cs.

Constructors

Name Description
MulticastAspect(MulticastTargets, bool)

Initializes a new instance of the MulticastAspect class.

Properties

Name Description
AttributeExclude

If true, indicates that this attribute removes all other instances of the same attribute type from the set of elements defined by the current instance.

AttributeInheritance

Determines whether this attribute is inherited.

AttributePriority

Gets or sets the priority of the current attribute in case that multiple instances are defined on the same element (lower values are processed before).

AttributeReplace

This property not supported in Metalama. Metalama always behaves as if this property were true.

AttributeTargetAssemblies

Multicasting to external assemblies is not supported in Metalama.

AttributeTargetElements

Gets or sets the kind of elements to which this custom attributes applies.

AttributeTargetExternalMemberAttributes

Multicasting to external types is not supported in Metalama.

AttributeTargetExternalTypeAttributes

Multicasting to external types is not supported in Metalama.

AttributeTargetMemberAttributes

Gets or sets the visibilities, scopes, virtualities, and other characteristics of members to which this attribute applies.

AttributeTargetMembers

Gets or sets the expression specifying to which members this instance applies.

AttributeTargetParameterAttributes

Gets or sets the passing style (by value, out or ref) of parameters to which this attribute applies.

AttributeTargetParameters

Gets or sets the expression specifying to which parameters this instance applies.

AttributeTargetTypeAttributes

Gets or sets the attributes of types to which this attribute applies. Visibility, scope (Instance or Static) and generation are the only categories that are taken into account; attributes of other categories are ignored.

AttributeTargetTypes

Gets or sets the expression specifying to which types this instance applies.

Implementation

Methods

Name Description
BuildAspect(IAspectBuilder<ICompilation>)

Defines the aspect implementation by adding advice, child aspects, and validators to the target declaration.

BuildAspect(IAspectBuilder<INamedType>)

Defines the aspect implementation by adding advice, child aspects, and validators to the target declaration.

BuildEligibility(IEligibilityBuilder<ICompilation>)

Configures the eligibility of the aspect or attribute by defining rules that determine which declarations the aspect can be applied to.

BuildEligibility(IEligibilityBuilder<INamedType>)

Configures the eligibility of the aspect or attribute by defining rules that determine which declarations the aspect can be applied to.

Extension Methods

See Also