2011-09-09 3 views
2

私はクラスを作成しました。クラス内に実装した関数の名前を返したいと思います。関数名を返す方法は?

public class cls 
{ 
    public static string fun() 
    { 
     //code 
    } 
} 

だけで私はその関数の戻り値、(funです)関数の名前を知らない方法を知りたいです。

あなたはリフレクションを使用する必要が
+2

'Messages'は_class_の名前です。関数は 'Saved'になります。あなたは何をしたいですか? –

+0

@Etienne de Martel、次回は適切な編集を行うことができます。 – ocodo

+0

@エティエンヌ保存したものは何も意味しませんでした – Amged

答えて

4
public static void TraceContext(string messageFormat) 
{ 
    Trace.WriteLine(string.Format(messageFormat, 
     new System.Diagnostics.StackFrame(1).GetMethod().Name)); 
} 

How To: Obtain Method Name Programmatically For Tracing

を参照してくださいお勧めします、その場合には

悪気ものではなく、あなたがあなたの説明を言葉で表現しました方法に基づいて、私は反射の事前の知識を負いませんするつもりです、

3

、あなたがこの

typeof(Messages).GetMethods(BindingFlags.Instance | BindingFlags.Public) 
.Select(m=>m.Name) 
.ToArray() 
1

を試してみてください? クラスの名前はMessagesです。 ファンクションは、Savedという名前です。 あなたは入力ミスをしたか、コード/説明から重要な何かを省略しました。

いずれにしても、後の機能はReflection名前空間に含まれています。私は、次のintroductory tutorial

+2

「保存済み」は静的なので、実際には上記の方法では機能しません。あなたは '|を追加する必要がありますBindingFlags.Static 'を取得して取得します。 –

1

あなたの質問ではケースの場合、これは動作します:

var methods = typeof (Messages).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static); 
foreach(var method in methods) 
{ 
    Console.WriteLine(method.Name); 
} 

あなたが他のデータが必要な場合(たとえば、メソッドを継承し親クラスから)、あなたはBindingFlagsの他の組み合わせが必要です。

関連する問題