У меня есть объект 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?