Smart Client Software Factory 如何使用Action Catalog
来源:互联网 发布:淘宝火锅底料好卖吗 编辑:程序博客网 时间:2024/05/22 15:08
首先需要了解Action Catalog这个玩意是干嘛用的,官网上的解释为,它可以决定程序中一个业务动作是否执行。在网上看了看,它使用最多的情况是权限控制。
下面看看怎么在SCSF中加入Action Catalog
首先在Infrastructure.Module项目中添加一个类 MyActionCondition ,并继承IActionCondition 接口,同时引用两个命名空间
using System.Threading;using Microsoft.Practices.CompositeUI;然后在MyActionCondition类中,我们需要实现IActionCondition 接口的CanExecute方法
C#
public bool CanExecute(string action, WorkItem context, object caller, object target){ if (action == "ShowMyView" && Thread.CurrentPrincipal.Identity.Name == "Officer") { return true; } else { return false; }}
需要引用命名空间,rootnamespace根据你自己项目的名字来,下面不再复述这个问题。
using rootnamespace.Infrastructure.Interface.Services;
下面的步骤就是在Modules 中注册 MyActionCondition 中的action catalog了,在Module.cs中加入如下方法
public override void AddServices(){ base.AddServices(); IActionCatalogService catalog = _rootWorkItem.Services.Get<IActionCatalogService>(); catalog.RegisterGeneralCondition(new MyActionCondition());}下一步,需要修改Shell工程中的ShellApplication,首先引用两个命名空间
using rootnamespace.Infrastructure.Library.BuilderStrategies;using Microsoft.Practices.ObjectBuilder;然后需要重写AddBuilderStrategies方法,把ActionStrategy加入到ObjectBuilder。该策略指定Builder的初始化阶段。这个策略会反射由ObjectBuilder创建的对象方法,并把打上Action属性标签的方法,加入Action catalog中
protected override void AddBuilderStrategies(Builder builder){ base.AddBuilderStrategies(builder); builder.Strategies.AddNew<ActionStrategy>(BuilderStage.Initialization);}下面需要修改MyModule工程中Constants文件夹下的ActionNames.cs ShowMyView这是给这个Action起了个名字。
接下来在MyModule工程中新建一个类 ModuleActions,里面的ShowMyView方法打上了Action的属性标签,这个方法就被注册到Action Catalog 中,以此来控制这个被注册的方法在满足条件的情况下执行。
C#
public class ModuleActions{ private WorkItem _workItem = null; [ServiceDependency] public WorkItem WorkItem { get { return _workItem; } set { _workItem = value; } } [Action(Constants.ActionNames.ShowMyView)] public void ShowMyView(object caller, object target) { IMyView view = WorkItem.Items.AddNew<MyView>(); WorkItem.Workspaces[Constants.WorkspaceNames.RightWorkspace].Show(view); }}
首先要注册这个Action,添加如下方法
然后要执行这个Action,添加如下方法 最后需要在Run方法上加上刚才创建的两个方法
public override void Run(){ RegisterActions(); ExecuteActions();}到这里就算完成了!
===============================================================
再拿一个老外的文章的例子说说
http://weblogs.asp.net/bsimser/archive/2007/10/26/taming-the-actioncatalog-in-scsf.aspx
这个老外,他有一个ModuleController类,在类中,他有一些权限判断要做,比如只有某个角色的用户才能看到某某菜单
判断的方法虽然可以重用,但是大量的条件判断语句让人感觉不舒服,这个时候就是Action Catalog出场的时候了下面他定义了几个不同的业务逻辑判断的方法
上面对三种角色进行了判断。
然后创建一个业务动作类,来处理业务动作
最后,我们还需要在ModuleController中对业务动作进行注册到执行 最后在ShellApplication中注册这个策略
0 0
- Smart Client Software Factory 如何使用Action Catalog
- Smart Client Software Factory 如何使用Action Catalog
- Smart Client Software Factory 如何使用Command
- Smart Client Software Factory 如何使用Command
- Smart Client Software Factory 如何发布事件
- Smart Client Software Factory 如何订阅事件
- Smart Client Software Factory 如何发布事件
- Smart Client Software Factory 如何订阅事件
- 了解Smart Client Software Factory
- 初识Smart Client Software Factory
- Smart Client Software Factory:CAB
- Smart Client Software Factory View之间如何通信
- Smart Client Software Factory View之间如何通信
- Smart Client Software Factory 2010安装条件
- Smart Client Software Factory:创建登录窗口
- Smart Client Software Factory 加上Hello world
- Smart Client Software Factory 加上Hello world
- Smart Client Software Factory:扩展工具栏,加入新视图(View)
- cocos2dx + android 如何添加百度插屏广告
- Openstack I版 结合 Ceph 分布式存储 部署安装(十)
- Apache的prefork模式和worker模式
- [BZOJ1088]SCOI2005扫雷|递推
- java 面试题
- Smart Client Software Factory 如何使用Action Catalog
- 一个简单看安卓性能的方法
- Android开发工具——ADB(Android Debug Bridge) <二>HOST端
- jQuery Waterfall插件的使用-瀑布流图片显示
- nginx基本配置与参数说明 相应的例子
- Android,ScrollView内的控件改变之后禁止自动滚动
- android中调用assets中文件的方法
- C++开源代码项目汇总
- Smart Client Software Factory 如何使用Command