簡體   English   中英

WF —如何使用自定義活動而不在單獨的工作流活動庫中創建它?

[英]WF — how do I use a custom activity without creating it in a separate Workflow Activity Library?

我正在嘗試完成似乎很簡單的事情。 我有一個帶有工作流的狀態機工作流控制台應用程序。 我為此創建了一個自定義活動。 永遠都不會使用此活動。 我只想在我的工作流程中使用此活動,但是:

  1. 它不會出現在工具箱中。
  2. 我無法將其從解決方案資源管理器拖到工作流設計器中。

我絕對不想創建單獨的狀態機工作流活動庫,因為這只會使我的解決方案混亂。 就像我說的那樣,我永遠不會在任何其他項目中使用此活動,因此我希望將其限制在這個項目中……但是我只是不知道如何將其引入設計師! 我瘋了嗎?

這是活動的代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM