| File: ApplicationModel\IResourceWithCustomWithReference.cs | Web Access |
| Project: src\src\Aspire.Hosting\Aspire.Hosting.csproj (Aspire.Hosting) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; namespace Aspire.Hosting.ApplicationModel; /// <summary> /// Defines custom <c>WithReference</c> dispatch behavior for a resource type. /// </summary> /// <typeparam name="TSelf">The concrete resource type that provides the custom dispatch behavior.</typeparam> /// <remarks> /// This contract is used by the internal ATS-visible <c>withReference</c> dispatcher /// to route references to resource-specific logic at runtime. Implementations may /// customize dispatch based on either the source or destination resource type. /// </remarks> [Experimental("ASPIREATS001")] public interface IResourceWithCustomWithReference<TSelf> : IResource where TSelf : IResource, IResourceWithCustomWithReference<TSelf> { /// <summary> /// Applies a reference from <paramref name="source"/> to <paramref name="builder"/> using resource-specific behavior. /// </summary> /// <param name="builder">The destination resource builder.</param> /// <param name="source">The source resource builder.</param> /// <param name="connectionName">An optional connection string override used by connection-string-based references.</param> /// <param name="optional"><see langword="true"/> to allow a missing connection string; otherwise, <see langword="false"/>.</param> /// <param name="name">An optional service discovery name override used by service-based references.</param> /// <typeparam name="TDestination">The destination resource type.</typeparam> /// <returns>The destination <see cref="IResourceBuilder{T}"/> when handled; otherwise, <see langword="null"/>.</returns> static abstract IResourceBuilder<TDestination>? TryWithReference<TDestination>( IResourceBuilder<TDestination> builder, IResourceBuilder<IResource> source, string? connectionName = null, bool optional = false, string? name = null) where TDestination : IResourceWithEnvironment; }