在系统开发时,经常会有些横越多个模块的行为,使用传统的软件开发方法并不能够有效的模块化,
一般这些行为我们称为横切关注点,如日志、异常、特殊的权限检查等,这里不细讨论横切关注点这个话题,
我们用一个例子来说说特性在这个方面的使用,
假如有一个系统有很多业务服务组成,每个业务服务的访问权限只有具体服务开发人员根据
用户具体类:
一般这些行为我们称为横切关注点,如日志、异常、特殊的权限检查等,这里不细讨论横切关注点这个话题,
我们用一个例子来说说特性在这个方面的使用,
假如有一个系统有很多业务服务组成,每个业务服务的访问权限只有具体服务开发人员根据
需求才能确定,而具体的用户权限情况由专门用户管理模块管理,我们用特性和反射来实现这个机制,
(鉴于反射的性能问题,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