/
Andru196
/
NSwagClone
Обзор
Документация
Войти
/
Andru196
/
NSwagClone
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
1
Аналитика
Безопасность
master
src/NSwag.CodeGeneration.CSharp/CSharpClientGenerator.cs
82 строки
4 KB
Marko Lahma
Enable implicit usings and remove unused (#5040)
22 ноя 2024, 20:08
Не верифицирован
22 ноя 2024, 20:08
1278e0b
Код
Авторство
О чём код?
//----------------------------------------------------------------------- // <copyright file="SwaggerToCSharpClientGenerator.cs" company="NSwag"> // Copyright (c) Rico Suter. All rights reserved. // </copyright> // <license>https://github.com/RicoSuter/NSwag/blob/master/LICENSE.md</license> // <author>Rico Suter, mail@rsuter.com</author> //----------------------------------------------------------------------- using NJsonSchema.CodeGeneration; using NJsonSchema.CodeGeneration.CSharp; using NSwag.CodeGeneration.CSharp.Models; namespace NSwag.CodeGeneration.CSharp { /// <summary>Generates the CSharp service client code. </summary> public class CSharpClientGenerator : CSharpGeneratorBase { private readonly OpenApiDocument _document; /// <summary>Initializes a new instance of the <see cref="CSharpClientGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public CSharpClientGenerator(OpenApiDocument document, CSharpClientGeneratorSettings settings) : this(document, settings, CreateResolverWithExceptionSchema(settings.CSharpGeneratorSettings, document)) { } /// <summary>Initializes a new instance of the <see cref="CSharpClientGenerator" /> class.</summary> /// <param name="document">The Swagger document.</param> /// <param name="settings">The settings.</param> /// <param name="resolver">The resolver.</param> /// <exception cref="ArgumentNullException"><paramref name="document" /> is <see langword="null" />.</exception> public CSharpClientGenerator(OpenApiDocument document, CSharpClientGeneratorSettings settings, CSharpTypeResolver resolver) : base(document, settings, resolver) { Settings = settings; _document = document ?? throw new ArgumentNullException(nameof(document)); } /// <summary>Gets or sets the generator settings.</summary> public CSharpClientGeneratorSettings Settings { get; } /// <summary>Gets the base settings.</summary> public override ClientGeneratorBaseSettings BaseSettings => Settings; /// <summary>Generates the client class.</summary> /// <param name="controllerName">Name of the controller.</param> /// <param name="controllerClassName">Name of the controller class.</param> /// <param name="operations">The operations.</param> /// <returns>The code.</returns> protected override IEnumerable<CodeArtifact> GenerateClientTypes(string controllerName, string controllerClassName, IEnumerable<CSharpOperationModel> operations) { var exceptionSchema = (Resolver as CSharpTypeResolver)?.ExceptionSchema; var model = new CSharpClientTemplateModel(controllerName, controllerClassName, operations, exceptionSchema, _document, Settings); if (model.HasOperations) { if (model.GenerateClientInterfaces && !model.SuppressClientInterfacesOutput) { var interfaceTemplate = Settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Client.Interface", model); yield return new CodeArtifact(model.Class, CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Contract, interfaceTemplate); } if (!model.SuppressClientClassesOutput) { var classTemplate = Settings.CSharpGeneratorSettings.TemplateFactory.CreateTemplate("CSharp", "Client.Class", model); yield return new CodeArtifact(model.Class, CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Client, classTemplate); } } } /// <summary>Creates an operation model.</summary> /// <param name="operation">The operation.</param> /// <param name="settings">The settings.</param> /// <returns>The operation model.</returns> protected override CSharpOperationModel CreateOperationModel(OpenApiOperation operation, ClientGeneratorBaseSettings settings) { return new CSharpOperationModel(operation, (CSharpGeneratorBaseSettings)settings, this, (CSharpTypeResolver)Resolver); } } }