首页 新闻 搜索 专区 学院

C#使用Attribute实现拦截器

0
悬赏园豆:10 [已解决问题] 解决于 2020-06-11 09:57
复制代码
  public class MyAttribute : Attribute
    {
        public void Log()
        {
            //1. 获取到标记MyAttribute特性的方法的名字(SayHello)
            //2. 获取到SayHello所属的类的名字(Person)
            //3. 获取SayHello的所有参数(arg1, arg2)
            //4. 做些其他的事儿
        }
    }
public class Person { [MyAttribute] public void SayHello(string arg1, int arg2) { Console.WriteLine("hello world!"); } }
复制代码

想实现上面的MyAttribute特性,把这个特性加到SayHello方法上,就能在MyAttribute类里获取到SayHello方法的一些信息(如类Person,方法SayHello,SayHello的参数arg1,arg2)

C#
Mad_Rabbit的主页 Mad_Rabbit | 菜鸟二级 | 园豆:307
提问于:2018-08-01 14:05
< >
分享
最佳答案
0

已经自行解决

Mad_Rabbit | 菜鸟二级 |园豆:307 | 2018-08-15 16:29

怎么解决的

看,有灰机在飞 | 园豆:186 (初学一级) | 2018-09-27 15:30

请问博主怎么解决的,我也想知道。

子思 | 园豆:200 (初学一级) | 2019-05-29 16:13
其他回答(5)
0

直接获取某个特性应用到了哪些类和哪些方法,好像没有哦。不过可以反过来做:通过反射获取程序集上的类,获取类和方法应用的特性,并判断该特性是不是你要找的那个特性,如果是就把类名和方法吗记录下来。

大豆男生 | 园豆:608 (小虾三级) | 2018-08-01 17:14
0

Attribute 只能用于标记

dudu | 园豆:35922 (高人七级) | 2018-08-01 19:20
0

postsharp 你可以看看 

通信的搞程序 | 园豆:1742 (小虾三级) | 2018-08-02 08:07
0

啥方案啊,我也需要这个

李0539 | 园豆:437 (菜鸟二级) | 2019-03-08 11:24
0

AOP,使用 AOP 组件可以轻松实现,自己实现可以参考 https://www.cnblogs.com/weihanli/p/12754922.html 和 AspectCore

WeihanLi | 园豆:217 (菜鸟二级) | 2020-06-11 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册