исключение «тип не определен» с WF4 RC - PullRequest
2 голосов
/ 11 мая 2010

Я получаю следующее исключение при вызове моего рабочего процесса (динамически):

При обработке дерева рабочего процесса возникли следующие ошибки: «DynamicActivity»: частная реализация действия «1: DynamicActivity» имеет следующую ошибку проверки: Ошибка (и) компилятора при обработке выражения «TryCast (simplerule_out, OutputBase2)». Тип «OutputBase2» не определен.

'DynamicActivity': частная реализация действия '1: DynamicActivity' имеет следующую ошибку проверки: Ошибка (и) компилятора при обработке выражения «Res». Тип «OutputBase2» не определен.

'DynamicActivity': частная реализация действия '1: DynamicActivity' имеет следующую ошибку проверки: Ошибка (и) компилятора при обработке выражения «Res». Тип «OutputBase2» не определен.

'DynamicActivity': частная реализация действия '1: DynamicActivity' имеет следующую ошибку проверки: Ошибка (и) компилятора при обработке выражения «Новый список (Of OutputBase2)». Тип «OutputBase2» не определен.

Рабочий процесс очень прост и отлично работает на VS 2010 beta 2!

Все, что я пытаюсь сделать, - это создать новый список моего абстрактного пользовательского типа "OutputBase2".

public class OutputBase2
{
    public OutputBase2() { }

    public bool Succeeded { get; set; }
}

class Example
{
    public void Exec()
    {
        ActivityBuilder builder = new ActivityBuilder();
        builder.Name = "act1";
        var res = new DynamicActivityProperty { Name = "Res", Type = typeof(OutArgument<List<OutputBase2>>), Value = new OutArgument<List<OutputBase2>>() };
        builder.Properties.Add(res);
        builder.Implementation = new Sequence();
        ((Sequence)builder.Implementation).Activities.Add(new Assign<List<OutputBase2>> { To = new VisualBasicReference<List<OutputBase2>> { ExpressionText = res.Name }, Value = new VisualBasicValue<List<OutputBase2>>("New List(Of OutputBase2)") });
        Activity act = getActivity(builder);

        var res2 = WorkflowInvoker.Invoke(act);
    }

    string getXamlStringFromActivityBuilder(ActivityBuilder activityBuilder)
    {
        string xamlString;
        StringBuilder stringBuilder = new StringBuilder();
        System.IO.StringWriter stringWriter = new System.IO.StringWriter(stringBuilder);
        System.Xaml.XamlSchemaContext xamlSchemaContext = new System.Xaml.XamlSchemaContext();
        System.Xaml.XamlXmlWriter xamlXmlWriter = new System.Xaml.XamlXmlWriter(stringWriter, xamlSchemaContext);
        System.Xaml.XamlWriter xamlWriter = System.Activities.XamlIntegration.ActivityXamlServices.CreateBuilderWriter(xamlXmlWriter);
        System.Xaml.XamlServices.Save(xamlWriter, activityBuilder);
        xamlString = stringBuilder.ToString();
        return xamlString;
    }

    public Activity getActivity(ActivityBuilder t)
    {
        string xamlString = getXamlStringFromActivityBuilder(t);
        System.IO.StringReader stringReader = new System.IO.StringReader(xamlString);
        Activity activity = System.Activities.XamlIntegration.ActivityXamlServices.Load(stringReader);
        return activity;
    }
}

Спасибо!

1 Ответ

0 голосов
/ 12 мая 2010

Решение заключается в добавлении экземпляра VisualBasicSettings при выполнении действия.

Эта тема была полезна:
http://social.msdn.microsoft.com/Forums/en-US/wfprerelease/thread/2b77771e-84a6-4ec3-a944-3de2a60201fc

...