Почему мое выделение игнорируется при установке значений в поле workitem?

#c# #tfs #tfs-workitem

#c# #tfs #tfs-workitem

Вопрос:

Я пытаюсь автоматически создать новый рабочий элемент после того, как я выбрал проект и один из его типов рабочих элементов. В целях тестирования я перебираю все проекты и все их типы рабочих элементов, чтобы создать для каждого типа рабочего элемента новый рабочий элемент. Я знаю, что есть обязательные поля, которые должны иметь значение, прежде чем пытаться сохранить этот рабочий элемент. Вот почему я пытаюсь установить значения «по умолчанию» для этого поля, но если я регистрирую ArrayList, который я получаю из .Метод Validate(), я вижу, что есть те же поля, что и раньше. Похоже, что мое распределение по полям игнорируется. В следующем примере у меня все еще было бы поле «GemeldetVon» внутри списка invalidFields в конце.

Кто-нибудь видит, что я делаю неправильно?

Вот мой фрагмент:

 foreach (WorkItemType workItemType in workItemTypes)
{
    WorkItem workitem = new WorkItem(workItemType);
    workitem.Title = "OTRS-TFS-Connector Test-Workitem";
    ArrayList requiredFields = workitem.Validate();
    if (requiredFields != null) {
        foreach(Field f in requiredFields) {
            if (f.Name.Equals("GemeldetVon")) {
                workitem.Fields["GemeldetVon"].Value = "some Value";
            }
            if...
        }
    }
}
ArrayList invalidFields = workitem.Validate();
 

Комментарии:

1. Это «workitem. Поля[«GemeldetVon»].Value = «некоторое значение»;» выполняется в цикле if? Каков статус поля в Validate()?

Ответ №1:

IIRC вы должны вызвать метод WorkItem.Open or WorkItem.PartialOpen перед установкой значений полей.

Ответ №2:

Теперь это сделано. Это было из-за недопустимых значений, которые я пытался присвоить. В моем примере поле требует пользователя в качестве значения, а не просто какой-то строки. Это работает, если я назначаю допустимые значения. Спасибо 🙂