C#特性的应用(简易横切关注点实现)

在系统开发时,经常会有些横越多个模块的行为,使用传统的软件开发方法并不能够有效的模块化,
一般这些行为我们称为横切关注点,如日志、异常、特殊的权限检查等,这里不细讨论横切关注点这个话题,
我们用一个例子来说说特性在这个方面的使用,
假如有一个系统有很多业务服务组成,每个业务服务的访问权限只有具体服务开发人员根据

需求才能确定,而具体的用户权限情况由专门用户管理模块管理,我们用特性和反射来实现这个机制,

(鉴于反射的性能问题,Reflection.Emit提供了更优的解决办法,实际上这也是AOP实现的核心)

这是个简单且不完整的控制反转实现:


先定义下用户类型:

    public enum UserTypeEnum
    {
        Guest,
        Customer,
        NetManager,
        Administrator        
    }

用户具体类:

    public class UserInfo
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public UserTypeEnum UserType { get; set; }

        public UserInfo()
        {
            this.UserType = UserTypeEnum.Guest;
        }

        public UserTy
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值