1

コンパイルして実行する文字列としてXAMLがあります。

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

このワークフローには、入力としてPersonオブジェクト(タイプ: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.StringFirstName'はタイプ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
});

どんな入力でも大歓迎です。

ありがとう。

4

1 に答える 1

0

私は問題を見つけました。Personクラスを含むDLLがAppDomainに2回ロードされました。そのため、コンパイルされたXAMLは同じタイプの異なるインスタンスを参照していたため、このエラーがスローされました。

于 2012-12-27T08:30:26.127 に答える