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.
Inheritance
Implements
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 |
| 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. |