Metalama 1.0 / / Metalama Documentation / Aspect API / Metalama.​Framework.​Code / IDeclaration

Interface IDeclaration

Represent a declaration.

Namespace: Metalama.Framework.Code
Assembly: Metalama.Framework.dll
Syntax
[CompileTime]
public interface IDeclaration : IDisplayable, IDiagnosticLocation, ICompilationElement, IMeasurable
Remarks

The IDeclaration interface implements IEquatable<T>. The implementation uses the Default comparer. To use a different comparer, choose a different comparer from IDeclaration.Compilation.Comparers.

Properties

Name Description
Attributes

Gets the collection of custom attributes on the declaration.

ContainingDeclaration

Gets the containing declaration, such as a INamedType for nested types or for methods. If the containing element is a namespace or a compilation, null is returned.

DeclarationKind

Gets the kind of declaration.

DeclaringAssembly

Gets the declaring assembly, which can be the current Compilation or a reference assembly.

Depth

Gets the depth of the current declaration in the code model. The value of the Depth property has no absolute meaning, only a relative one, i.e. it is only relevant when comparing the depth of two declarations. A declaration has always a greater depth than the declaration in which it is contained. A type has always a greater depths than the base it derives from or the interfaces it implements.

IsImplicitlyDeclared

Gets a value indicating whether the member is implicitly declared, i.e. declared without being represented in source code. Returns false if it is explicitly declared in code.

Origin

Gets the origin of the current declaration.

Methods

Name Description
ToRef()

Gets a reference to the compilation, which can be used to identify the current declaration in a different revision of the compilation.

ToSerializableId()

Gets a serializable identifier for the current declaration. This identifier is guaranteed to be deserializable in a different process, even with a different version of Metalama.

Extension Methods

DeclarationExtensions.IsContainedIn(IDeclaration, IDeclaration)
DeclarationExtensions.ContainingAncestors(IDeclaration)
DeclarationExtensions.ContainingAncestorsAndSelf(IDeclaration)
DeclarationExtensions.Enhancements<T>(T)
DeclarationExtensions.GetClosestNamedType(IDeclaration)
DeclarationExtensions.GetTopmostNamedType(IDeclaration)
DeclarationExtensions.ForCompilation<T>(T, ICompilation, ReferenceResolutionOptions)
GenericExtensions.GetOriginalDefinition(IDeclaration)
EligibilityExtensions.IsAspectEligible<T>(IDeclaration, EligibleScenarios)
EligibilityExtensions.IsAspectEligible(IDeclaration, Type, EligibleScenarios)
EligibilityExtensions.IsAdviceEligible(IDeclaration, AdviceKind)
EligibilityExtensions.IsContractAdviceEligible(IDeclaration, ContractDirection)
SymbolExtensions.GetSymbol(IDeclaration)

See Also