Удалить поля из объектов перед передачей в json - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть объект Jira, который я использую с api rest Jira; когда у меня был только один проект 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?

1 Ответ

0 голосов
/ 05 ноября 2018

Сделайте класс jira базовым классом и наследуйте его для каждого проекта. Вам нужно только преобразовать в базовый класс.

...