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