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

    相关推荐

    • 草木灰是什么,草木灰都有什么化学成分

      技术草木灰是什么,草木灰都有什么化学成分草木灰都有什么化学成分?要回答这个问题,得弄懂如下几个问题草木灰是什么。1、什么叫草木灰?2、草木灰的化学成分;3、草木灰的性质是什么?4、如何使用草木灰?
      一、什么叫草木灰?草木

      生活 2021年10月23日
    • 常见Hadoop命令使用方法是怎样的

      技术常见Hadoop命令使用方法是怎样的这篇文章将为大家详细讲解有关常见Hadoop命令使用方法是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在学习Hadoop时

      攻略 2021年11月12日
    • q开头的姓氏,百家姓里读音是‘qu’的有哪些

      技术q开头的姓氏,百家姓里读音是‘qu’的有哪些百家姓里读音是‘qu’的有q开头的姓氏:瞿 曲 屈 屈 [Qū]〈名〉 古邑名 。春秋晋地。在今山西省吉县北,盛产良马 姓。春秋楚王族三姓之一。曲[ qū ]姓 拼 音:[

      生活 2021年10月23日
    • java的定义类如何使用(java怎么定义实现类)

      技术Java的组合类怎么定义这篇文章主要讲解了“Java的组合类怎么定义”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java的组合类怎么定义”吧!我们可以在一个新类的定

      攻略 2021年12月21日
    • Spring+JPA如何集成Hibernate

      技术Spring+JPA如何集成Hibernate这篇文章主要介绍Spring+JPA如何集成Hibernate,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.JPA简介 Java Persis

      攻略 2021年11月23日
    • python查询字典最快的方法(python字典查找算法)

      技术Python字典查找性能的示例分析这期内容当中小编将会给大家带来有关Python字典查找性能的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。timeit.repeattim

      攻略 2021年12月23日