【问题标题】:WF -- how do I use a custom activity without creating it in a separate Workflow Activity Library?WF——如何使用自定义活动而不在单独的工作流活动库中创建它?
【发布时间】:2009-09-04 03:05:08
【问题描述】:

我正在尝试完成一些看起来应该非常简单的事情。我有一个状态机工作流控制台应用程序,其中包含一个工作流。我为它创建了一个自定义活动。此活动将永远不会在其他任何地方使用。我只想在我的工作流程中使用此活动,但是:

  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 应用程序。

有人知道解决这个问题的方法吗?

【问题讨论】:

    标签: .net workflow-foundation workflow-activity


    【解决方案1】:

    您似乎发现了 Visual Studio 中的一个错误。我相信您可以破解它以使其工作,但是,您是否考虑过使用它并将工作流位保留在类库中并从简单的控制台应用程序中引用它们?是的,这会创建一个 EXE 和一个 DLL,但这样做的成本是微不足道的,实际上可以更好地分离您的层(UI 与业务逻辑),并在未来实现更好的重用。

    【讨论】:

      【解决方案2】:

      我不在我的机器上,所以我无法检查这个想法,但您是否尝试过进入设计器的代码文件并手动插入最小代码,然后返回到设计器中查看它是否存在?

      您还没有说明您是让设计人员创建 XAML 还是 C#,但即使是 XAML,您也应该能够编辑 XML 来执行此操作。

      【讨论】:

        【解决方案3】:

        您所要做的就是构建项目。如果编译成功,它应该会出现在工具箱中。设计者只读取上次成功构建的活动。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多