我有一堆带有InArguments的自定义NativeActivity。当客户端在重新托管的设计器上编辑它的工作流时,它将始终是根活动。到目前为止一切都很好。
问题是,尽管在PropertyInspector上显示了InArguments,但没有显示“Arguments”选项卡。我理解为什么会发生但我真的想让这个NativeActivity成为root活动有很多原因:我可以在我的路上自定义它,我可以给它一个自定义设计器等。
如何将NativeActivity的参数属性设置为在设计器中的“参数”选项卡上显示它们可用,并允许客户端使用InArguments执行任何他/她想要的任何操作而不使用“参数名称” '没有宣布。由于其保护水平可能无法访问“想想?
我尝试了什么:
我知道ActivityBuilder可能是解决这个问题的最好方法。我成功尝试了类似的东西:
ActivityBuilder builder = new ActivityBuilder();
builder.Implementation = new MyCustomNativeActivity();
DynamicActivityProperty property = new DynamicActivityProperty()
{
Name = "TestArg",
Type = typeof(InArgument<string>),
};
builder.Properties.Add(property);
Designer.Load(builder);
但这会导致代码错误,因为我在加载设计器时会有参数。这使我无法使用与表单代码本身分离的自定义活动的库。主要是因为ActivityBuilder是一个密封类,就像DynamicActivity一样,我认为它也会起作用。
有没有办法模拟ActivityBuilder行为,允许在代码时添加属性,但使用可以轻松继承和自定义的NativeActivity?
我希望自己清楚明白。
P.S。:我也看过IExecutionProperty,但我不太清楚它是如何工作的,它的目的是什么以及它是否可以在这里应用。
由于
答案 0 :(得分:0)
这里不确定你的问题。那就是说昨天我通过直接从Activity派生而不是将NativeActivity用于工作流的根来解决了另一个问题。不确定它是否会对你的情况有所帮助,但它可能会这样做。
这样的事情:
public class RootActivity : Activity
{
public InArgument<string> TestArg {get; set;}
public RootActivity(Activity child)
{
Implementation = () => child;
}
}
注意:键入记事本,因此未经过测试,请小心拼写错误。
答案 1 :(得分:0)