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

    相关推荐

    • JavaScript实现换肤效果(换背景)

      技术JavaScript实现换肤效果(换背景) JavaScript实现换肤效果(换背景)JavaScript实现换肤效果(换背景)
      本文实例为大家分享了JavaScript实现换肤效果的具体代码,供大

      礼包 2021年11月1日
    • listagg在hive中如何使用(listagg函数的使用)

      技术LISTAGG函数怎么使用这篇文章主要介绍“LISTAGG函数怎么使用”,在日常操作中,相信很多人在LISTAGG函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”LISTAG

      攻略 2021年12月21日
    • 烟怎么读,KENT这个烟中文怎么读

      技术烟怎么读,KENT这个烟中文怎么读kent香烟是一种香烟品牌烟怎么读,是美国英美烟草(品牌)集团授权于新加坡等地制造。英文是“KENT。亦称为“肯特”、“箭牌”、“健牌”、“建牌”、“长箭”等,因该烟通体白色的缘故而

      生活 2021年10月24日
    • 怎么以软件开发人员的身份更新技能

      技术怎么以软件开发人员的身份更新技能这篇文章主要介绍“怎么以软件开发人员的身份更新技能”,在日常操作中,相信很多人在怎么以软件开发人员的身份更新技能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

      攻略 2021年10月21日
    • 跨境电商租用美国服务器有必要吗

      技术跨境电商租用美国服务器有必要吗对于跨境电商来说随着您的业务增长,您应该关心最重要的一件事是您的网站服务器能够承载更多并发。这里美国服务器在市场上一向以高性价比和强大性能享有盛誉,因此成为很多跨境电商用户搭建商城平台的

      礼包 2021年12月14日
    • 端午节的简介50字,端午节的来历30字左右

      技术端午节的简介50字,端午节的来历30字左右战国时期的楚国(今湖北)诗人屈原在该日抱石跳汨罗江自尽端午节的简介50字,统治者为树立忠君爱国标签将端午作为纪念屈原的节日;部分地区也有纪念伍子胥、曹娥等说法。
      端午节与春节

      生活 2021年10月22日