Class ContractAspect
A base aspect that can validate or change the value of fields, properties, indexers, and parameters.
Inheritance
Implements
Namespace: Metalama.Framework.Aspects
Assembly: Metalama.Framework.dll
Syntax
public abstract class ContractAspect : Aspect, IAspect<IParameter>, IEligible<IParameter>, IAspect<IFieldOrPropertyOrIndexer>, IAspect, ICompileTimeSerializable, ITemplateProvider, IEligible<IFieldOrPropertyOrIndexer>
Remarks
A contract aspect can apply to the input or output data flow, or to both data flows, according to the ContractDirection value passed to the constructor. Since the current class does not know the value of this parameter before it is instantiated, this class cannot set the eligibility conditions using the BuildEligibility(IEligibilityBuilder<IFieldOrPropertyOrIndexer>) method. If a derived class targets a specific ContractDirection (i.e. if the choice is not left to the user), its implementation of BuildEligibility(IEligibilityBuilder<IFieldOrPropertyOrIndexer>) can call BuildEligibilityForDirection(IEligibilityBuilder<IFieldOrPropertyOrIndexer>, ContractDirection) methods. This means that eligibility can be checked upfront by the IDE before suggesting the code actions.
In any case, this aspect verifies the eligibility of the target with respect to the specific ContractDirection and target declaration. This verification cannot be skipped.
Constructors
Name | Description |
---|---|
ContractAspect(ContractDirection) | Initializes a new instance of the ContractAspect class. |
Properties
Name | Description |
---|---|
Direction | Gets the direction of the data flow (Input, Output or Both) to which this contract applies. |
Methods
Name | Description |
---|---|
BuildAspect(IAspectBuilder<IFieldOrPropertyOrIndexer>) | |
BuildAspect(IAspectBuilder<IParameter>) | |
BuildEligibility(IEligibilityBuilder<IFieldOrPropertyOrIndexer>) | |
BuildEligibility(IEligibilityBuilder<IParameter>) | |
BuildEligibilityForDirection(IEligibilityBuilder<IFieldOrPropertyOrIndexer>, ContractDirection) | Populates the IEligibilityBuilder for a field, property or indexer when the ContractDirection is known. |
BuildEligibilityForDirection(IEligibilityBuilder<IParameter>, ContractDirection) | Populates the IEligibilityBuilder for a parameter when the ContractDirection is known. |
Validate(Object) |