XAML的动态编译 - Linq错误

时间:2012-12-21 11:00:07

标签: c# linq workflow-foundation

我有一个XAML as String,我编译然后执行。

DynamicActivity workflowActivity = (DynamicActivity)ActivityXamlServices.Load(new StringReader(xaml));

这个工作流有一个Person对象(Type:Namespace Workflow.Model.Person)作为输入,所以我传递参数并执行它。

Dictionary<String,Object> parameters = new Dictionary<String,Object>();

Workflow.Model.Person person = new Workflow.Model.Person();
person.FirstName = "John";

parameters["Person"] = person;

WorkflowInvoker.Invoke(workflowActivity, parameters);

我得到以下异常:

[System.ArgumentException] = {“属性'System.String FirstName'未定义类型Workflow.Model.Person'”}

System.Linq.Expressions.Expression.Property(表达式表达式,PropertyInfo属性)抛出错误。

我尝试过许多事情但没有成功。如果我删除工作流内的属性FirstName的访问权限,它将正确执行。根据建议我添加了引用的导入,但它不起作用:

VisualBasicSettings.Default.ImportReferences.Add(new VisualBasicImportReference()
{
    Assembly = typeof(Person).Assembly.FullName,
    Import = typeof(Person).Namespace
});

赞赏任何意见。

感谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题。包含Person类的DLL被加载到AppDomain中两次。因此编译的XAML引用了相同类型的不同实例,因此抛出了这个错误。