首页 > 解决方案 > NSwag 将原始字段生成为 Nullable

问题描述

我在 C# 中有一个 RESTful WebAPI 2 服务,并且我使用 swagger 作为 API 描述符。现在,在客户端,我正在使用 NSwag,可以在此处找到它来生成客户端代码:https ://github.com/RSuter/NSwag

现在,我已经使用 nSwag 一年多了,我第一次看到这种行为,不确定是我的代码中的某些东西导致它还是 NSwag 本身在起作用,但是当我使用 nSwag 生成客户端时,它生int fields which are marked [Required]成为 Nullable客户端的属性。在服务端可能如下所示:

[Required]
[Range(1, Int32.MaxValue, ErrorMessage = "GenTrainId must be greater than 0")]
public int MyField { get; set; } 

但是,当我在客户端生成它时,它看起来像下面这样:

 [Newtonsoft.Json.JsonProperty("genTrainId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
        [System.ComponentModel.DataAnnotations.Range(1, 2147483647)]
        public int? GenTrainId
        {
            get { return _genTrainId; }
            set 
            {
                if (_genTrainId != value)
                {
                    _genTrainId = value; 
                    RaisePropertyChanged();
                }
            }
        }

我不知道我的服务端代码的哪一部分告诉 NSwag 将其转换为 NULLable 属性,而它显然是服务端必需的 Non-Nullable 属性。我错过了什么吗?

标签: c#asp.net-web-apiswaggernswag

解决方案


推荐阅读