【问题标题】:.net core 3.1 upgrade : DataContract and DataMember - unable to hide a field.net core 3.1 升级:DataContract 和 DataMember - 无法隐藏字段
【发布时间】:2020-04-28 14:09:41
【问题描述】:

我有一堂课

[DataContract]
public class Request
{
   [DataMember]
   public int Id{get; set;}

   //calculated field 
   public int Salary{get; set;}

   [DataMember]
   public int Name{get; set;}

}

通过没有 [DataMember] 属性,我能够隐藏字段“Salary”。有没有办法可以在请求中隐藏/不公开该字段?

[DataContract]
public class EmployeeDetailResponse
{
   [DataMember]
   public int Id{get; set;}

   [DataMember]
   public string Grade{get; set;}

   //Used while calculating grade and should be hidden
   public int Salary{get; set;}

   [DataMember]
   public int Name{get; set;}

}

预期输出:我想将请求用作:

请求:

Id
Name

和响应为

Id
Grade
Name

实际输出为: 要求:

Id
Salary (Not hidden)
Name

和响应为

Id
Grade
Salary (Not hidden)
Name

我正在使用 swagger 对此进行测试,并希望在请求中只看到 Id 和 Name,当我输入输入值并执行时,我希望在响应中看到 Id、Grade 和 Name。 Swagger 显示 Salary 及其价值。这发生在升级到 .net core 3.1 之后。我希望 Salary 字段不会被序列化,并且不应该在响应中公开

【问题讨论】:

  • @HenkHolterman 我已经更新了问题 - 它没有隐藏薪水,我可以在回复中看到它们
  • @HenkHolterman 我正在使用 swagger 对此进行测试,并希望在请求中只看到 Id 和 Name,当我输入这些值并执行时,我希望在响应中看到 Id、Grade 和 Name .它也显示 Salary 及其价值。这发生在升级到 .net core 3.1 之后。我希望 Salary 字段不会被序列化,并且不应该在响应中公开

标签: swagger wcf-binding datacontract asp.net-core-3.1 datamember


【解决方案1】:

使用System.Text.Json.Serialization 中的[JsonIgnore] 隐藏字段以防止序列化/Swagger。

据我所知,DataContract/DataMember 被完全忽略。

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多