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。
  • public アクセシビリティがあり、入れ子になっている型 (存在する場合) も public アクセシビリティを持っている場合は、enum 型。
  • 上記の型の 1 次元配列。

この質問はあなたの質問に似ています: Is it possible to have a delegate as attribute parameter? . そこには、役に立つ回避策があります。

于 2012-12-17T23:06:19.867 に答える
0

直接いいえではありません。これを文字列として渡し、リフレクションを使用して MethodInfo を生成するか、さらに良い方法として、メソッドを LinkedFrom および LinkedTo 属性でマークします。

ただし、効率的ではありません。検証も少し手間がかかるため、属性が正しい解決策であるかどうか疑問に思うでしょう。

于 2012-12-17T23:12:46.707 に答える