如何将方法作为属性参数?

Cra*_*ney 6 .net c# attributes

我想应用一个接受委托作为参数的属性,但我找不到这样做的语法.

例如,要传递一个类,您必须使用typeof:

    [SomeAttribute(typeof(SomeClass))]
Run Code Online (Sandbox Code Playgroud)

委托的语法是什么(我试图传递一个静态方法)?

    [SomeAttribute(??? SomeStaticMethod ???]
Run Code Online (Sandbox Code Playgroud)

Qui*_*son 8

这超出了元数据的能力.

您可以将该方法作为字符串传递,如果您只想调用静态方法,也可以指定该类.

[SomeAttribute(typeof(SomeClass), @"SomeStaticMethod")]
Run Code Online (Sandbox Code Playgroud)

当然你必须通过反射来调用它,但是因为你正在查找自定义属性,所以这可能不是一个很大的偏差.

  • 嗯,那太糟糕了.我在很多地方都不需要这个,我不想破坏可重构性.所以我只是将方法放在一个类中,在方法上放置一个属性,然后定位该类. (2认同)