博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
隐藏自定义复合活动的内部实现
阅读量:6136 次
发布时间:2019-06-21

本文共 1696 字,大约阅读时间需要 5 分钟。

有的时候我们为了解决特定的问题,来自己实现一个自定义活动,该活动包含一组子活动。我们举个简单的例子,我们开发一个自定义活动CaryEncapsulationActivity。我们选择活动的基类为SequenceActivity,在该活动我们只提供一个TestValue的属性给外部,代码如下:

public static DependencyProperty TestValueProperty = DependencyProperty.Register("TestValue",                                           typeof(String), typeof(CaryEncapsulationActivity));[DescriptionAttribute("TestValue")][CategoryAttribute("接口")][BrowsableAttribute(true)][DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)]public String TestValue{   get   {       return ((String)(base.GetValue(CaryEncapsulationActivity.TestValueProperty)));   }   set   {       base.SetValue(CaryEncapsulationActivity.TestValueProperty, value);   }} 然后向该活动中添加两个CodeActivity,他们事件处理程序如下:
private void codeActivity1_ExecuteCode(object sender, EventArgs e){     Console.WriteLine("我爱:{0}",TestValue);}private void codeActivity2_ExecuteCode(object sender, EventArgs e){     Console.WriteLine("我要报效:{0}", TestValue);}  

很简单这个自定义活动就完成了,我们添加到工作流中,效果如下图:     

 

    

执行的结果如下:   

---工作流开始---

我爱:我的祖国
我要报效:我的祖国
---工作流结束---
请按任意键继续. . .

     

程序执行结果没有任何问题,但是我们只是设置了CaryEncapsulationActivity活动提供的接口属性TestValue的值,从工作流设计器我们可以看出CaryEncapsulationActivity活动是通过两个CodeActivity来执行的,这样我们就爆露了活动的内部的结构,但我们并不需要知道CaryEncapsulationActivity活动内部是怎么处理该属性的,现在我们只需要给CaryEncapsulationActivity加上如下代码为活动设计器提供强制基类:  
[Designer(typeof(ActivityDesigner), typeof(IDesigner))]
public partial class CaryEncapsulationActivitySequenceActivity
{.....}
 

我们从新生成项目后在看下工作流设计器的效果,如下图: 
 
 
从上图可以看出工作流设计器中的CaryEncapsulationActivity活动的子活动看不到了,这样我只需要设置TestValue

属性,不必也无需知道该活动内部是如果处理的。执行程序的结果和上面是一样的。

本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2008/10/24/EncapsulationActivity.html,如需转载请自行联系原作者

你可能感兴趣的文章
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>