9

我想你不能,但有没有办法将方法引用为属性的参数?即像下面这样的东西?我可以回退到使用字符串,但更喜欢使用编译器时间来验证类型是否正确。

[LinkToAction(Something)]
public void SomethingElse()
{

}

public static void Something()
{

}

public class LinkToActionAttribute : Attribute
{
    public LinkToActionAttribute(MethodInfo info)
    {

    }
}
4

2 回答 2

2

对不起,但你不能。只是这些可以作为属性的参数传递:

  • 以下类型之一:bool、byte、char、double、float、int、long、short、string。
  • 类型对象。
  • 类型 System.Type。
  • 枚举类型,前提是它具有公共可访问性,并且它嵌套的类型(如果有)也具有公共可访问性。
  • 上述类型的一维数组。

这个问题与您的问题相似:是否可以将委托作为属性参数?. 在那里,提供了一种对您有用的解决方法。

于 2012-12-17T23:06:19.867 回答
0

不是直接没有。您可以将其作为字符串传递,然后使用反射生成 MethodInfo,或者更好的是,使用 LinkedFrom 和 LinkedTo 属性标记方法。

虽然它效率不高,但验证它也需要一些工作,这让你想知道属性是否是正确的解决方案。

于 2012-12-17T23:12:46.707 回答