1

我正在尝试构建一个与工作流设计器相同的工具箱。所有工作流活动/元素都应列在 10 类活动设计器中(控制流、流程图、状态机、消息传递、运行时、基元、事务、集合、错误处理、迁移)。

我试图从程序集中加载工作流的所有活动,但存在一些问题。

1)。活动名称未完全显示。例如,AddToCollection 将显示为 AddToCollection'1。如何完整地展示它们?

2)。所有活动都收集在“System.Activities.Statements”类别中。因为我不知道如何根据上述类别对它们进行分组。所以我只是加载程序集'System.Activities.Statements'并将我得到的所有内容添加到一个锅中。有什么想法将它们分组吗?

 private static ToolboxControl CreateToolboxControl()
 {
    const string @namespace = "System.Activities.Statements";
    var toolbox = new ToolboxControl();
    var cat = new ToolboxCategory(@namespace);
    ToolboxItemWrappers(typeof(Flowchart).Assembly, @namespace).ToList().ForEach(cat.Add);
    if (cat.Tools.Count > 0)
        toolbox.Categories.Add(cat);
    return toolbox;        
  }

  private static IEnumerable<ToolboxItemWrapper> ToolboxItemWrappers(Assembly assembly, string @namespace)
  {
    if (assembly == null)
    {
      throw new ArgumentNullException("assembly");
    }
    if (string.IsNullOrEmpty(@namespace))
    {
        return Enumerable.Empty<ToolboxItemWrapper>();
    }

    var q = from type in assembly.GetTypes()
            where string.Equals(type.Namespace, @namespace)
            && type.IsPublic && !type.IsNested && !type.IsAbstract
            && type.GetConstructor(Type.EmptyTypes) != null
            orderby type.Name
            select new ToolboxItemWrapper(type);
    return q;
  }

3)。有些活动不在我的清单中。例如,“消息”类别中的所有内容都不存在。我怎样才能从组装或其他方式得到它们?

非常感谢!

伊万

4

0 回答 0