首页 > Web开发 > 详细

dotnet Framework的aop和dotnet net core的aop

时间:2021-05-27 22:35:44      阅读:22      评论:0      收藏:0      [点我收藏+]

.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

 

dotnet Framework的aop和dotnet net core的aop

原文:https://www.cnblogs.com/wesley168/p/14819600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!