| File: Ats\AspireDtoAttribute.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; /// <summary> /// Marks a class as an ATS (Aspire Type System) Data Transfer Object. /// DTOs are serializable types used to pass structured data to capabilities. /// </summary> /// <remarks> /// <para> /// DTOs should be simple record or class types with properties that can be /// serialized to/from JSON. They should not contain complex .NET types like /// IConfiguration, ILogger, or other framework-specific types. /// </para> /// <para> /// Example: /// <code> /// [AspireDto] /// public sealed class AddRedisOptions { /// public required string Name { get; init; } /// public int? Port { get; init; } /// } /// </code> /// </para> /// </remarks> [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = false, AllowMultiple = false)] [Experimental("ASPIREATS001")] public sealed class AspireDtoAttribute : Attribute { /// <summary> /// Gets or sets an optional type identifier for this DTO. /// If not specified, the DTO will be serialized as a plain JSON object. /// </summary> /// <remarks> /// When set, the serialized JSON will include a <c>$type</c> field with this value. /// </remarks> public string? DtoTypeId { get; set; } }