在传递给 json 之前从对象中删除字段

Remove fields from objects before passing to json

我有一个与 Jira rest 一起使用的 Jira 对象 api;当我只有一个 Jira 项目时,因此一组字段可以正常工作,但是现在我有许多不同的项目可以使用不同的字段,我需要能够动态删除某些项目以前不需要的字段我把它传给吉拉。我知道我可以为每个项目创建一个自定义对象,但我宁愿创建并维护一个包含所有可能项的对象,并在将其传递给 api 之前删除每个项目不需要的对象。

默认字段:

[DataContract]
public class FieldsUpdate
{
    [DataMember(Name = "issuetype")]
    public Issuetype issuetype;
    [DataMember(Name = "project")]
    public Project project;
    [DataMember(Name = "labels")]
    public List<object> labels = new List<object>();
    [DataMember(Name = "description")]
    public string description;
    [DataMember(Name = "summary")]
    public string summary;
    [DataMember(Name = "customfield_10400")]
    public object ExpectedDelDate;        
}

上层字段:

[DataContract]
public class JiraItmAddUpdate
{

    [DataMember(Name = "fields")]
    public FieldsUpdate fields = new FieldsUpdate();

    public JiraItmAddUpdate()
    {
        FieldsUpdate fields = new FieldsUpdate();
    }

}

当前使用示例:

JiraItmAddUpdate JiriUpdateFlds = new JiraItmAddUpdate();
JiriUpdateFlds.fields.summary = "Some Summary";
JiriUpdateFlds.fields.description = "Some Description"
var Request = JiraHttpClient.Client.PutAsJsonAsync(str_IssueKey + "/", JiriUpdateFlds);

这会产生类似

的结果
    {"fields": {
                "summary": "Some Summary",
                "description" = "Some Description"
                }
     }

例如,有时我需要结束的只是摘要,但它必须保留 "fields" 父级。我看过 ExpandoObject 但似乎无法让它做我想做的事,任何人都知道我如何发送动态对象而不必为每个 jira 项目构建单独的 class 字段?

使 jira class 成为基础 class 并为每个项目继承它。然后您只需要转换为基数 class.