看了下, IRegisterMetadata
接口的自定方法,发现自己代码写好了后怎么都不行。Search了一下工程发现也没有别的地方用到DesignerMetadata类。
试验了一下和
CodeActivity的继承类放同一个dll,没效果。
然后放在不同的dll也没有效果。
后来终于找到问题就是dll名后加.Design,如果
CodeActivity
放在Penseesoft.WorkFlow.ActivityLibrary.dll里,Designer就一定要放在Penseesoft.WorkFlow.ActivityLibrary.Design.dll里。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities.Presentation.Metadata;
using System.ComponentModel;
using Penseesoft.WorkFlow.ActivityLibrary;
using System.Windows;
namespace Penseesoft.WorkFlow.ActivityLibrary.Design
{
public class DesignerMetadata : IRegisterMetadata
{
public void Register()
{
AttributeTableBuilder builder = new AttributeTableBuilder();
builder.AddCustomAttributes(typeof(LeaveFlowActivity), new DesignerAttribute(typeof(LeaveFlowDesigner)));
builder.AddCustomAttributes(typeof(First2of3), new DesignerAttribute(typeof(First2of3Designer)));
MetadataStore.AddAttributeTable(builder.CreateTable());
}
}
}