Metalama.Framework.Eligibility Namespace
This namespace allows you to define how your aspects can be utilized.
Conceptual Documentation
Refer to Defining the eligibility of aspects.
Overview
Your aspect should implement the IEligible<T> interface, which contains a single method, BuildEligibility. This method receives an IEligibilityBuilder<T>. Typically, you would use the extension methods of this interface defined in the EligibilityExtensions class to specify the eligibility of your aspect. These extension methods add predefined implementations of the IEligibilityRule<T> interface to the IEligibilityBuilder<T>. However, you also have the option to provide your own implementation of the IEligibilityRule<T> interface.
For more details and examples, refer to Defining the eligibility of aspects.
Class diagram
classDiagram class YourAspect { } class IEligible~T~ { BuildEligibility(IEligibilityBuilder~T~) } class IEligibilityBuilder~T~ { AddRule(IEligibilityRule~T~) } class EligibilityExtensions { DeclaringType()$ Parameter()$ ReturnType()$ Type()$ ExceptForInheritance()$ ExceptForScenarios()$ MustBe()$ MustBeXXX()$ MustSatisfy()$ MustSatisfyAll()$ MustSatisfyAny()$ } class IEligibilityRule~T~ { GetEligibity() GetIneligibilityJustification() } YourAspect <|-- IEligible~T~ : implements IEligibilityBuilder~T~ <-- IEligible~T~ : uses EligibilityExtensions <-- IEligible~T~ : uses IEligibilityBuilder~T~ <-- EligibilityExtensions : populates IEligibilityBuilder~T~ *-- IEligibilityRule~T~
Namespace members
Classes
DescribedObjectExtensions
Extension methods for IDescribedObject<T>.
DescribedObject<T>
Encapsulates an object and a human-readable description.
EligibilityExtensions
Extension methods for IEligibilityBuilder.
EligibilityRuleFactory
Creates instances of the IEligibilityRule<T> interface, which can then be used by the VerifyEligibility(IEligibilityRule<TAspectTarget>) method.
Structs
EligibilityExtensions.Converter<T>
A helper type that allows to convert an IEligibilityBuilder<T> for a type to an IEligibilityBuilder<T> of another type.
Interfaces
IDescribedObject<T>
Encapsulates an arbitrary object and its optional human-readable description. Implemented by DescribedObject<T>.
IEligibilityBuilder
The non-generic base interface for IEligibilityBuilder<T>.
IEligibilityBuilder<T>
The argument of BuildEligibility(IEligibilityBuilder<T>). Allows the implementation to add requirements using methods of EligibilityExtensions.
IEligibilityRule<T>
Encapsulates a predicate determining the eligibility of an object (typically a declaration or a type).
IEligible<T>
An interface that allows aspect to specify to which declarations they are allowed to be applied.
Enums
EligibleScenarios
Enumeration of scenarios in which an aspect can be used.