zoukankan      html  css  js  c++  java
  • dotnet Framework的aop和dotnet net core的aop

    .Net Framework的aop

    /// <summary>
        /// 特性类
        /// </summary>
        public class FormFilterAttribute:Attribute
        {
            private readonly string _formTitle;
    
            public FormFilterAttribute(string formTitle)
            {
                this._formTitle = formTitle;
            }
    
            /// <summary>
            /// 通过特性设置标题
            /// </summary>
            /// <param name="form"></param>
            public void SetTitle(Form form)
            {
                form.Text = _formTitle;
            }
    
        }
    View Code
     /// <summary>
        /// 调用特性的类
        /// </summary>
        public class RunWithAop
        {
            /// <summary>
            /// aop通用的方法
            /// </summary>
            /// <param name="form"></param>
            public static void AopMethod(Form form)
            {
                /**
                 * 1.获取特性
                 * 2.得到特性的实例,调用特性中的方法
                 */ 
                 Type type= form.GetType();
                if (type.IsDefined(typeof(FormFilterAttribute),true))
                {
                    //调用GetCustomAttribute方法需要引用反射的命名空间。否则只能看到GetCustomAttributes方法。
                    FormFilterAttribute attribute = (FormFilterAttribute)type.GetCustomAttribute(typeof(FormFilterAttribute));
                    attribute.SetTitle(form);
                }
            }
    
            /// <summary>
            /// 给外界调用的方法
            /// </summary>
            /// <param name="form"></param>
            public static void RunApp(Form form)
            {
                AopMethod(form);
                Application.Run(form);
            }
    
            public static void Show(Form form)
            {
                AopMethod(form);
                form.Show();
            }
    
            public static void ShowDialog(Form form)
            {
                AopMethod(form);
                form.ShowDialog();
            }
        }
    View Code
     static class Program
        {
            /// <summary>
            ///  The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.SetHighDpiMode(HighDpiMode.SystemAware);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                //Application.Run(new Form1());
                RunWithAop.RunApp(new Form1());
            }
        }
    View Code
  • 相关阅读:
    (十)HTTP.sys远程代码执行
    (九)不安全的HTTP方法
    (八)用户枚举
    (六)跨站请求伪造
    (五)跨站脚本攻击
    接口测试思路
    逆向工程,生成pojo、xml、mapper
    MyBatis框架核心之(五)注解使用resultMap及多表查询
    查看源代码Source not found及在eclipse中配置jdk的src.zip源代码
    EL有11个隐含对象
  • 原文地址:https://www.cnblogs.com/wesley168/p/14819600.html
Copyright © 2011-2022 走看看