如何进行C#实现AOP微型框架基础的分析

技术如何进行C#实现AOP微型框架基础的分析如何进行C#实现AOP微型框架基础的分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在向大家详细介绍C#实现A

如何用C#分析AOP微框架的基础,相信很多没有经验的人都不知所措。因此,本文总结了出现问题的原因和解决方法,希望大家可以通过这篇文章来解决这个问题。

在向大家详细介绍C#实现的AOP的微框架之前,让大家了解一下。cs文件的微框架,然后全面介绍用C#实现的AOP的微框架。

在前面的系列文章中,我介绍了消息、代理和AOP之间的关系。这次我就拿出自己用C#编写的AOP微框架和大家分享一下。

AOP最基本的功能是实现特定的前处理和后处理。我让C#通过代理实现了AOP微框架。让我们来看看。组成这个小框架的cs文件。

1. AopProxyAttribute AOP代理特性

使用系统;

使用System。运行时。远程处理;

使用System。运行时。远程处理。代理;

namespaceEnterpriseServerBase。面向切面编程(Aspect Oriented Programming的缩写)

{

///summary

///AoproxyAttribute

///AOP代理特性,如果一个类想要实现特定的AOP,

只需实现AopProxyBase和IAopProxyFactory,然后添加这个特性。

///2005.04.11

////summary

[属性用法(属性目标。类,AllowMultiple=false)]

public class aoapproxyattributes : proxyattribute

{

privateiaoproxyfactoryproxyfactory=null;

publicAopProxyAttribute(类型因子类型)

{

this . proxy factory=(iaoproxyfactory)Activator。create instance(factory type);

}

#regionCreateInstance

///summary

///获取目标对象的自定义透明代理。

///

 </summary> 

  • public override MarshalByRefObject CreateInstance(Type serverType)

  • //serverType是被AopProxyAttribute修饰的类  

  • {  

  • //未初始化的实例的默认透明代理  

  • MarshalByRefObject target = base.CreateInstance (serverType);

  • //得到位初始化的实例(ctor未执行)  

  • object[] args = {target ,serverType} ;  

  • //AopProxyBase rp = (AopProxyBase)Activator.CreateInstance(this.realProxyType ,args) ; 

  • //Activator.CreateInstance在调用ctor时通过了代理,所以此处将会失败  

  •  

  • //得到自定义的真实代理  

  • AopProxyBase rp = this.proxyFactory.CreateAopProxyInstance(target ,serverType) ;

  • //new AopControlProxy(target ,serverType) ;  

  • return (MarshalByRefObject)rp.GetTransparentProxy() ;  

  • }  

  • #endregion  

  • }  

  • 2 .MethodAopSwitcherAttribute.cs

    1. using System;  

    2.  

    3. namespace EnterpriseServerBase.Aop  

    4. {  

    5. /// <summary> 

    6. /// MethodAopSwitcherAttribute 
      用于决定一个被AopProxyAttribute修饰的class的某个特定方法是否启用截获 。  

    7. /// 创建原因:绝大多数时候我们只希望对某个类的一部分Method而不是所有Method使用截获。  

    8. /// 使用方法:如果一个方法没有使用MethodAopSwitcherAttribute
      特性或使用MethodAopSwitcherAttribute(false)修饰,  

    9. ///  都不会对其进行截获。只对使用了MethodAopSwitcherAttribute(true)启用截获。  

    10. /// 2005.05.11  

    11. /// </summary> 

    12. [AttributeUsage(AttributeTargets.Method ,AllowMultiple = false )]  

    13. public class MethodAopSwitcherAttribute : Attribute  

    14. {  

    15. private bool useAspect = false ;  

    16.  

    17. public MethodAopSwitcherAttribute(bool useAop)  

    18. {  

    19. this.useAspect = useAop ;  

    20. }  

    21.  

    22. public bool UseAspect  

    23. {  

    24. get  

    25. {  

    26. return this.useAspect ;  

    27. }  

    28. }  

    29. }  

    看完上述内容,你们掌握如何进行C#实现AOP微型框架基础的分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/113747.html

    (0)

    相关推荐

    • 牛客网面试题

      技术牛客网面试题 牛客网面试题目录
      一、JAVA
      二、计算机网络
      三、操作系统
      四、项目
      五、数据库
      第六部分 框架
      第七部分 设计模式
      第八部分 数据结构和算法
      第九部分 Linux
      ########

      礼包 2021年12月20日
    • 英语小品,介绍个好玩的英语小品剧本

      技术英语小品,介绍个好玩的英语小品剧本Three Little Pigs 三只小猪 Storyteller: There are three little pigs living with 讲故事者英语小品:三只小猪和

      生活 2021年10月23日
    • 广义货币m2,广义货币M2是具体指什么

      技术广义货币m2,广义货币M2是具体指什么广义货币是一个经济学概念广义货币m2,和狭义货币相对应,货币供给的一种形式或口径,以M2来表示,其计算方法是交易货币以及定期存款与储蓄存款。
      我国现阶段也是将货币供应量划分为三个

      生活 2021年10月24日
    • 如何使用Microsoft技术栈

      技术如何使用Microsoft技术栈这期内容当中小编将会给大家带来有关如何使用Microsoft技术栈,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Microsoft技术栈最近有大量的

      攻略 2021年11月2日
    • 如何进行JSP的mysql_jdbc驱动程序的安装和使用

      技术如何进行JSP的mysql_jdbc驱动程序的安装和使用这篇文章给大家介绍如何进行JSP的mysql_jdbc驱动程序的安装和使用 ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。小编只是简单描述

      攻略 2021年11月16日
    • Hibernate有哪些核心接口

      技术Hibernate有哪些核心接口这篇文章主要介绍Hibernate有哪些核心接口,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Hibernate是一个开放源代码的对象关系映射框架,它对JDBC

      攻略 2021年12月8日