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

    相关推荐

    • Python基础知识-1.7标识符和关键字

      技术Python基础知识-1.7标识符和关键字 Python基础知识-1.7标识符和关键字一、标识符上图看完了,那什么是标识符
      答:在程序中定义的一些符号和名称
      二、作用
      前面学习变量了,下面的代码,此

      礼包 2021年12月5日
    • 如何用OAuth 2.0实现权限认证mybatis连接mysql数据库

      技术如何用OAuth 2.0实现权限认证mybatis连接mysql数据库本篇内容介绍了“如何用OAuth 2.0实现权限认证mybatis连接mysql数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困

      攻略 2021年12月4日
    • css如何设置链接点击后的颜色

      技术css如何设置链接点击后的颜色这篇文章主要为大家展示了“css如何设置链接点击后的颜色”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何设置链接点击后的颜色”这篇文

      攻略 2021年12月10日
    • mysql包含哪些知识点(mysql基础知识学习笔记整理)

      技术MySQL中的基础知识点有哪些这篇文章主要为大家展示了“MySQL中的基础知识点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中的基础知识点有哪些”这篇文

      攻略 2021年12月20日
    • SQL Server数据库mdf文件中了勒索病毒的解决方法是什么

      技术SQL Server数据库mdf文件中了勒索病毒的解决方法是什么这篇文章主要介绍“SQL Server数据库mdf文件中了勒索病毒的解决方法是什么”,在日常操作中,相信很多人在SQL Server数据库mdf文件中了

      攻略 2021年11月8日
    • vue生命周期多少个钩子函数(vue生命周期和钩子函数的区别)

      技术Vue生命周期中的八个钩子函数相机是怎样的Vue生命周期中的八个钩子函数相机是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、beforeCre

      攻略 2021年12月16日