私はそれが非常に単純であるように思われることを達成しようとしています。ワークフローを含むステート マシン ワークフロー コンソール アプリケーションがあります。そのためのカスタム アクティビティを作成しました。このアクティビティは、他の場所では決して使用されません。ワークフローでこのアクティビティを使用したいだけですが、次のようになります。
- ツールボックスには表示されません。
- ソリューション エクスプローラーからワークフロー デザイナーにドラッグできません。
別のステート マシン ワークフロー アクティビティ ライブラリを作成したくはありません。ソリューションが乱雑になるだけだからです。私が言ったように、私はこのアクティビティを他のプロジェクトで使用することは決してないので、これに限定したいと思います...しかし、それをデザイナーに取り込む方法がわかりません! 気が狂う!?
アクティビティのコードは次のとおりです。
public partial class GameSearchActivity: Activity
{
public GameSearchActivity()
{
InitializeComponent();
}
public static DependencyProperty QueryProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Query", typeof(string), typeof(GameSearchActivity));
[Description("Query")]
[Category("Dependency Properties")]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string Query
{
get
{
return ((string)(base.GetValue(GameSearchActivity.QueryProperty)));
}
set
{
base.SetValue(GameSearchActivity.QueryProperty, value);
}
}
public static DependencyProperty ResultsProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Results", typeof(string), typeof(GameSearchActivity));
[Description("Results")]
[Category("Dependency Properties")]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public IEnumerable<Game_GamePlatform> Results
{
get
{
return ((IEnumerable<Game_GamePlatform>)(base.GetValue(GameSearchActivity.ResultsProperty)));
}
set
{
base.SetValue(GameSearchActivity.ResultsProperty, value);
}
}
protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
{
IDataService ds = executionContext.GetService<IDataService>();
Results = ds.SearchGames(Query);
return ActivityExecutionStatus.Closed;
}
}
ありがとう。
編集:
プロジェクトの種類をコンソール アプリケーションからクラス ライブラリに変更すると、カスタム アクティビティがツールボックスに表示されることがわかりました。ただし、これは受け入れられません。コンソール/Windows アプリケーションである必要があります。
誰でもこれを回避する方法を知っていますか?