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
  • 相关阅读:
    DLL相关注意
    给我个理由要用虚析构函数
    字符指针常量和字符数组
    给自己普及网络基本知识
    面向对象三大基本特性,五大基本原则
    C/C++内存区域划分
    C++多态性
    Java XML Schema详解
    Java SE 第一百零五讲 对象的克隆与浅拷贝
    Java SE 第九十七~一百零五讲 线程与进程
  • 原文地址:https://www.cnblogs.com/wesley168/p/14819600.html
Copyright © 2011-2022 走看看