Asp.net core 即使设置了JSONSCHEMALANTATHER属性,NSwag也会生成基类
我正在为我的ASP.NET核心web api项目使用NSwag,但它无法正常工作。我想做的是排除IdentityUser的一些基本属性。这是我的自定义用户类: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]
[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"
}
}
},