Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WF4泛型活动能否在XAML中声明?_Xaml_Android Activity_Generics_Workflow Foundation 4 - Fatal编程技术网

WF4泛型活动能否在XAML中声明?

WF4泛型活动能否在XAML中声明?,xaml,android-activity,generics,workflow-foundation-4,Xaml,Android Activity,Generics,Workflow Foundation 4,我有一个Workflow 4活动,可以在从基类继承的任意数量的类上运行。因此,这种活动自然是通用的。与ForEach或AddToCollection活动类似,my activity需要一个类型参数 我的问题是:我可以用XAML在设计器中创建此活动吗?请记住,这是一项复合活动,因此设计师似乎是最佳选择 如果我在代码中创建它,它将如下所示: public class MyGenericActivity<T> : Activity where T : MyBaseClass { //

我有一个Workflow 4活动,可以在从基类继承的任意数量的类上运行。因此,这种活动自然是通用的。与ForEach或AddToCollection活动类似,my activity需要一个类型参数

我的问题是:我可以用XAML在设计器中创建此活动吗?请记住,这是一项复合活动,因此设计师似乎是最佳选择

如果我在代码中创建它,它将如下所示:

public class MyGenericActivity<T> : Activity where T : MyBaseClass
{
   //args would go here
   public MyGenericActivity()
   {
      this.Implementation = () => new Sequence
      {
         Activities = { //... }
      };
   }
}
公共类MyGenericActivity:活动,其中T:MyBaseClass
{
//阿格斯会去这里
公共MyGenericActivity()
{
this.Implementation=()=>新序列
{
活动={/…}
};
}
}

虽然这个解决方案可行,但维护肯定会很痛苦,这样你就得不到设计师的任何“细节”。

不确定是否可以,但我怀疑不能。但即使你能,你为什么要?xaml活动只是标记和组合,没有代码,因此如何使用泛型类型


使用您的活动的人的设计时体验与您创建活动的方式无关。只需添加一个设计器,并为用户提供您喜欢的任何设计时体验。您可以让他们使用WorkflowItemsPresenter添加多个子活动。

XAML堆栈可能支持它(不确定),但在VS 10中,工作流设计器肯定不允许您这样做。

我也没有找到任何证据证明我可以这样做。至于您的问题,“…您将如何使用泛型类型”,我会将该类型传递到其中的其他活动中。你看,我们已经编写了很多采用类型参数的活动(主要是CodeActivity)。如果我不必在xaml中指定类型,但可以对所有类型重复使用相同的xaml,那就太好了。这样,我的工作流主机就可以决定使用哪种类型,而不必为每种类型重新设计相同的xaml。此外,当前的问题不是设计时体验。这是代码重用。这是有道理的,但我恐怕不知道有什么方法可以做到这一点。好吧,不幸的是,我还没有找到一个好方法来做到这一点。所以,我不得不重构一些活动(包括这个复合活动),使它们采用非语法,类的实例作为System.Object传递。这给我留下了一个非常糟糕的印象,但这是我能想出的唯一方法,可以避免我们有20到30个xaml工作流做完全相同的事情。谢谢你的意见。