[英]WF — how do I use a custom activity without creating it in a separate Workflow Activity Library?
我正在嘗試完成似乎很簡單的事情。 我有一個帶有工作流的狀態機工作流控制台應用程序。 我為此創建了一個自定義活動。 永遠都不會使用此活動。 我只想在我的工作流程中使用此活動,但是:
我絕對不想創建單獨的狀態機工作流活動庫,因為這只會使我的解決方案混亂。 就像我說的那樣,我永遠不會在任何其他項目中使用此活動,因此我希望將其限制在這個項目中……但是我只是不知道如何將其引入設計師! 我瘋了嗎?
這是活動的代碼:
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應用程序。
有人知道解決這個問題的方法嗎?
您似乎已經發現Visual Studio中的錯誤。 我確定您可以破解它以使其運行,但是,您是否考慮過使用它並將工作流位保留在類庫中,並從簡單的控制台應用程序中引用它們? 是的,這會創建一個EXE和DLL,但是這樣做的成本微不足道,實際上可以更好地分離您的層(UI與業務邏輯),並在將來實現更好的重用。
我不在我的機器上,所以我無法檢查這個想法,但是您是否嘗試過進入設計者的代碼文件並手動插入最少的代碼,然后再回到設計者中查看是否存在?
您沒有說是否要讓設計人員創建XAML或C#,但是即使它是XAML,您也應該能夠編輯XML來做到這一點。
您要做的就是構建項目。 如果編譯成功,它將顯示在工具箱中。 設計師僅從上一次成功構建中讀取活動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.