Open sandboxFocusImprove this doc

Namespace Metalama.Framework.Metrics

This namespace enables you to consume and implement metrics.

To consume a metric, begin with a declaration, then call the extension method MetricsExtensions.Metric. Afterward, call Get.

Class Diagram

classDiagram

    class IMeasurable {

    }

    class IDeclaration {

    }

    class IMetric~TMeasurable~ {

    }

    class YourCustomMetric {

    }

    class YourCustomMetricProvider {
        <<sdk>>

    }

    class IMetricProvider~TMetric~ {
        GetMetric(IMeasurable)
    }

    class Metrics~TMeasurable~ {
        Get()
    }

    class MetricsExtensions {
        <<extension class>>
        Metrics()$
    }

    IMeasurable <-- MetricsExtensions : extension methods
    Metrics <-- MetricsExtensions : exposes
    IMetric~TMeasurable~ <-- Metrics : exposes

    IMeasurable <|-- IDeclaration : implements

    IMetric~TMeasurable~ <|-- YourCustomMetric : implements
    IMetricProvider~TMetric~ <|-- YourCustomMetricProvider : implements
    YourCustomMetric <-- YourCustomMetricProvider : computes

    IMetric~TMeasurable~ <-- IMetricProvider~TMetric~ : computes

    IMeasurable <-- IMetric~TMeasurable~ : applies to


Namespace members

Classes

MetricsExtensions

Exposes metrics to eligible objects.

Structs

Metrics<TMeasurable>

Exposes a Get<TExtension>() method, which computes and returns a metric for an eligible object.

Interfaces

IMeasurable

Base interface for objects that can be extended with metrics.

IMetric

A weakly-typed base interface for IMetric<T>. Never implement directly. Always implement IMetric<T>.

IMetricProvider<T>

Implements the computation or reading of a metric.

IMetric<T>

Base interface for all metrics. This interface exists only for strong typing. It does not have any members.