我有一个工作流,其根活动是一个自定义NativeActivity,带有一个名为XmlData的公共InArgument。当我尝试在子项中使用此参数时,如果在以下条件中使用XmlData,则会出现以下错误:
'XmlData' is not declared. It may be inaccessible due to its protection level
我的属性如下所示:
public Activity Body {get;set;}
public InArgument<CustomObj> XmlData {get;set;}
这是CacheMetadata方法:
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
var runtime = new RuntimeArgument("XmlData",typeof(CustomObj),ArgumentDirection.In,true);
metadata.Bind(this.XmlData,runtime);
metadata.AddArgument(runtime);
metadata.AddChild(Body);
}
我正在使用metadata.AddArgument方法在CacheMetadata中添加参数,我尝试使用AddChild和AddImplementationChild添加它拥有的子属性。
如果我用ActivityBuilder替换我的自定义活动并使用代码创建DynamicActivityProperty,那么条件可以成功编译,所以当我使用自己的代码时,我看不到我错过了什么。
答案 0 :(得分:0)
我可以想到三种可能的解决方案,一种是愚蠢的,一种是hacky,另一种是模糊的。
解决方案1(愚蠢的一个) 将RuntimeArgument提升为私有只读成员并交换Bind和AddArgument调用,我有一些随机出现的地方,这有助于。
解决方案2(非常hacky) 您始终可以将值放在上下文中的命名属性中,并将其拉出子项
解决方案3(明智之举) 如果要将InArgument传递给子节点,请将其绑定到变量并将子节点绑定到变量。
有任何帮助吗? 约翰