Asp.net core 即使设置了JSONSCHEMALANTATHER属性,NSwag也会生成基类

Asp.net core 即使设置了JSONSCHEMALANTATHER属性,NSwag也会生成基类,asp.net-core,.net-core,swagger,swagger-codegen,nswag,Asp.net Core,.net Core,Swagger,Swagger Codegen,Nswag,我正在为我的ASP.NET核心web api项目使用NSwag,但它无法正常工作。我想做的是排除IdentityUser的一些基本属性。这是我的自定义用户类: [DataContract] [JsonSchemaFlattenAttribute] public class User : IdentityUser { // Overridden variables [DataMember( Name = "id" )] [PersonalData]

我正在为我的ASP.NET核心web api项目使用NSwag,但它无法正常工作。我想做的是排除IdentityUser的一些基本属性。这是我的自定义用户类:

[DataContract]
[JsonSchemaFlattenAttribute]
public class User : IdentityUser
{
    // Overridden variables
    [DataMember( Name = "id" )]
    [PersonalData]
    public new string Id { get; set; }

    [DataMember( Name = "email" )]
    [ProtectedPersonalData]
    public new string Email { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new DateTimeOffset? LockoutEnd { get; set; }

    [PersonalData]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new bool TwoFactorEnabled { get; set; }

    [PersonalData]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new bool PhoneNumberConfirmed { get; set; }

    [ProtectedPersonalData]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string PhoneNumber { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string ConcurrencyStamp { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string SecurityStamp { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string PasswordHash { get; set; }

    [PersonalData]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new bool EmailConfirmed { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string NormalizedEmail { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string NormalizedUserName { get; set; }

    [ProtectedPersonalData]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new string UserName { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new bool LockoutEnabled { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public new int AccessFailedCount { get; set; }

    // Custom variables
    [DataMember( Name = "date_joined_utc" )]
    public DateTime DateJoinedUtc { get; set; }

    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public virtual ICollection<RefreshToken> RefreshTokens { get; set; }

    // Optimistic concurrency
    [Timestamp]
    [IgnoreDataMember]
    [JsonSchemaIgnoreAttribute]
    public byte[] RowVersion { get; set; }
}

我对jsonSchemaFlattribute的理解是,它应该排除基类,并将每个属性放在派生类中。那么,为什么要生成类IdentityUserOfString?我遗漏了什么?

出于某种原因,在用户类上设置openapignore解决了这个问题:

[DataContract]
//[JsonSchemaFlattenAttribute]
[OpenApiIgnore]
public class User : IdentityUser
生成:

"User": {
  "type": "object",
  "required": [
    "dateJoinedUtc"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "dateJoinedUtc": {
      "type": "string",
      "format": "date-time"
    }
  }
},

这是关于的源代码。在中,
seppenner
这样说;这就是他要搜索的。也许JSONSCHEMALANTATHER属性只能用于自定义BASE类。
"User": {
  "type": "object",
  "required": [
    "dateJoinedUtc"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "dateJoinedUtc": {
      "type": "string",
      "format": "date-time"
    }
  }
},