如何进行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)

    相关推荐

    • 抽象类、接口、内部类

      技术抽象类、接口、内部类 抽象类、接口、内部类抽象类abstract修饰符可以用来修饰方法,也可以用来修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,就是抽象类。抽象类中可以没有抽象方法,但是

      礼包 2021年12月2日
    • linux系统定时执行shell脚本

      技术linux系统定时执行shell脚本 linux系统定时执行shell脚本我们可能会经常需要在linux系统中做一些重复而又繁琐的操作,为了解放自己,我们需要将这些东西写到定时任务里面,让它每天执行

      礼包 2021年11月23日
    • Jupyter Notebook如何适应数据科学的发展方向

      技术Jupyter Notebook如何适应数据科学的发展方向本篇文章为大家展示了Jupyter Notebook如何适应数据科学的发展方向,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有

      攻略 2021年12月4日
    • win7下如何安装mysql5.7.16

      技术win7下如何安装mysql5.7.16这篇文章主要介绍了win7下如何安装mysql5.7.16,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1:

      攻略 2021年11月6日
    • 嵌入式Linux Framebuffer怎么描点画线

      技术嵌入式Linux Framebuffer怎么描点画线这篇文章主要讲解了“嵌入式Linux Framebuffer怎么描点画线”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学

      攻略 2021年11月23日
    • 寻寻觅觅的意思,如何解读李清照的《声声慢》

      技术寻寻觅觅的意思,如何解读李清照的《声声慢》李清照是我国文学史上杰出的女作家,宋词婉约派的主要代表人物,其作品对后世有着较大的影响寻寻觅觅的意思。《声声慢》可能是易安后期的作品。李清照所处的时代,是烽火连天,山河破碎的

      生活 2021年10月22日