Metalama 1.0 / / Metalama Documentation / Aspect API Documentation / Metalama.​Framework.​Aspects / Contract­Aspect

Class ContractAspect

A base aspect that can validate or change the value of fields, properties, indexers, and parameters.

Inheritance
ContractAspect
Namespace: Metalama.Framework.Aspects
Assembly: Metalama.Framework.dll
Syntax
public abstract class ContractAspect : Aspect, IAspect<IParameter>, IEligible<IParameter>, IAspect<IFieldOrPropertyOrIndexer>, IAspect, ILamaSerializable, 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)

Extension Methods

PresentingExtensions.AsHyperlink(Object)