我正在尝试构建一个与工作流设计器相同的工具箱。所有工作流活动/元素都应列在 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)。有些活动不在我的清单中。例如,“消息”类别中的所有内容都不存在。我怎样才能从组装或其他方式得到它们?
非常感谢!
伊万