# ExtensionPointDiagnostic

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.extensionpointdiagnostic/
> Summary: ExtensionPointDiagnostic: One host-bound extension point and whether the host replaced its built-in default.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

One host-bound extension point and whether the host replaced its built-in default.

```csharp
public sealed record ExtensionPointDiagnostic : IEquatable<ExtensionPointDiagnostic>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.extensionpointdiagnostic/">ExtensionPointDiagnostic</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;ExtensionPointDiagnostic&gt;</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Remarks

Tracon embeds into a host application through seven contracts:
`ITenantContext`, `IRunAttributionContext`,
`IToolAuthorizationHandler`, `IRunAuthorizationHandler`,
`IRunEventSink`, `IAttachmentStorage`, and
`IToolApprovalPresenter`. Each is registered
with `TryAdd`, so an application that registers nothing keeps
Tracon's built-in behavior exactly. This record answers, for each of
the seven, whether the host replaced that default.

This is the list, and it does not grow to cover every contract Tracon
registers with `TryAdd`: turning every replaceable registration into a
row would produce a dependency-injection dump instead of an answer to
"which of my seven embedding points are wired".

## Constructors

### <a id="Tracon_ExtensionPointDiagnostic__ctor"></a> ExtensionPointDiagnostic\(\)

```csharp
public ExtensionPointDiagnostic()
```

## Properties

### <a id="Tracon_ExtensionPointDiagnostic_Contract"></a> Contract

Gets the contract's name, for example `ITenantContext`.

```csharp
public required string Contract { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_ExtensionPointDiagnostic_Implementation"></a> Implementation

Gets the registered implementation's type name.

```csharp
public required string Implementation { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_ExtensionPointDiagnostic_IsBuiltInDefault"></a> IsBuiltInDefault

Gets whether the registration is Tracon's built-in default.

```csharp
public required bool IsBuiltInDefault { get; init; }
```

#### Property Value

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

## Methods

### <a id="Tracon_ExtensionPointDiagnostic_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_ExtensionPointDiagnostic_Equals_Tracon_ExtensionPointDiagnostic_"></a> Equals\(ExtensionPointDiagnostic?\)

```csharp
public bool Equals(ExtensionPointDiagnostic? other)
```

#### Parameters

`other` [ExtensionPointDiagnostic](/api/tracon.extensionpointdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_ExtensionPointDiagnostic_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_ExtensionPointDiagnostic_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Operators

### <a id="Tracon_ExtensionPointDiagnostic_op_Equality_Tracon_ExtensionPointDiagnostic_Tracon_ExtensionPointDiagnostic_"></a> operator ==\(ExtensionPointDiagnostic?, ExtensionPointDiagnostic?\)

```csharp
public static bool operator ==(ExtensionPointDiagnostic? left, ExtensionPointDiagnostic? right)
```

#### Parameters

`left` [ExtensionPointDiagnostic](/api/tracon.extensionpointdiagnostic/)?

`right` [ExtensionPointDiagnostic](/api/tracon.extensionpointdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_ExtensionPointDiagnostic_op_Inequality_Tracon_ExtensionPointDiagnostic_Tracon_ExtensionPointDiagnostic_"></a> operator \!=\(ExtensionPointDiagnostic?, ExtensionPointDiagnostic?\)

```csharp
public static bool operator !=(ExtensionPointDiagnostic? left, ExtensionPointDiagnostic? right)
```

#### Parameters

`left` [ExtensionPointDiagnostic](/api/tracon.extensionpointdiagnostic/)?

`right` [ExtensionPointDiagnostic](/api/tracon.extensionpointdiagnostic/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
