// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. /* * Copyright (c) 杭州颉创科技有限公司 2025. All rights reserved. * This source file is licensed under the MIT License found in the * LICENSE file in the root directory of this source tree. */ package simcu::simapi.openapi.models /** * @brief 表示 OpenAPI 引用对象。 */ public class OpenApiReference <: IOpenApiSerializable { /** * @brief 表示引用标识。 */ public var id: String /** * @brief 表示引用类型。 */ public var referenceType: ReferenceType /** * @brief 创建 OpenAPI 引用对象。 * @param referenceType 引用类型。 * @param id 引用标识。 */ public init(referenceType: ReferenceType, id: String) { this.id = id this.referenceType = referenceType } /** * @brief 返回当前引用在 OpenAPI 文档中的字符串值。 * @return 引用字符串。 */ public func toReferenceString(): String { if (ReferenceType.Tag == referenceType) { return id } return "#/components/${referenceType.toString()}/${id}" } /** * @brief 按 OpenAPI V3 格式写出当前引用对象。 * @param writer OpenAPI 写入器。 */ public func serializeAsV3(writer: IOpenApiWriter): Unit { if (ReferenceType.Tag == referenceType) { writer.writeValue(id) return } writer.startObject() writer.writeName("$ref") writer.writeValue(toReferenceString()) writer.endObject() } }