модельный элемент в WF 4 - PullRequest
0 голосов
/ 19 марта 2012

Я работаю в проекте WF 4.0. Это часть моей собственной деятельности:

public Activity Create(DependencyObject target)
{
        var sequenceModelItem = (target as WorkflowViewElement).ModelItem;
        sequenceModelItem
            .Properties["Variables"]
            .Collection
            .Add(new Variable<List<string>>("Provider", provider));

        sequenceModelItem
            .Properties["Variables"]
            .Collection
            .Add(new Variable<string>("ProviderSearch"));

        return new Sequence
        {
            Activities =
        {
           // Some activities...
        } 
        };
    }

Итак, вот вопрос. В провайдере у меня есть список некоторых провайдеров, которые у меня есть в моей БД. в SequenceModelItem я создаю переменную с тем же типом и связываю с ней провайдера списка. Все правильно, но при развертывании рабочего процесса и выполнении появляется следующая ошибка:

* При обработке дерева рабочего процесса возникли следующие ошибки: 'Literal <Список <String>>': Literal поддерживает только типы значений и неизменный тип System.String. Тип System.Collections.Generic.List`1 [System.String] нельзя использовать в качестве литерала *

Уверен, что ошибка здесь:

    .Add(new Variable<List<string>>("Provider", provider));

Но я не знаю, что мне нужно сделать, чтобы решить это,

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 19 марта 2012

Вы можете создать экземпляр, используя лямбду

new Variable<List<string>>("Provider", context => provider)

, но я не уверен, что это то, что вы хотите делать в методе Create фабрики шаблонов действий.Этот метод будет вызываться у вашего дизайнера во время разработки, но, безусловно, провайдер заботится о времени выполнения.Разве вы не должны использовать что-то во время выполнения, чтобы пойти и получить провайдера?

0 голосов
/ 19 марта 2012

Может быть, вам нужно изменить эту строку на:

.Add(new Variable<Dictionary<string, object>>( { "Provider", provider }));

Исходя из этой статьи Рона Джейкобса, создается впечатление, что новая переменная пытается преобразовать ваш список в литерал, который потерпит неудачу для типов ссылок (список). В статьях указывается, что если вы хотите использовать ссылочный тип, вы должны использовать словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...