私はクラスを作成しました。クラス内に実装した関数の名前を返したいと思います。関数名を返す方法は?
public class cls
{
public static string fun()
{
//code
}
}
だけで私はその関数の戻り値、(fun
です)関数の名前を知らない方法を知りたいです。
私はクラスを作成しました。クラス内に実装した関数の名前を返したいと思います。関数名を返す方法は?
public class cls
{
public static string fun()
{
//code
}
}
だけで私はその関数の戻り値、(fun
です)関数の名前を知らない方法を知りたいです。
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
を参照してくださいお勧めします、その場合には悪気ものではなく、あなたがあなたの説明を言葉で表現しました方法に基づいて、私は反射の事前の知識を負いませんするつもりです、
、あなたがこの
typeof(Messages).GetMethods(BindingFlags.Instance | BindingFlags.Public)
.Select(m=>m.Name)
.ToArray()
を試してみてください? クラスの名前はMessagesです。 ファンクションは、Savedという名前です。 あなたは入力ミスをしたか、コード/説明から重要な何かを省略しました。
いずれにしても、後の機能はReflection名前空間に含まれています。私は、次のintroductory tutorial
「保存済み」は静的なので、実際には上記の方法では機能しません。あなたは '|を追加する必要がありますBindingFlags.Static 'を取得して取得します。 –
うーん、何をすべきかをリフレクションを使用することができますhttp://www.csharp-examples.net/get-method-names/
あなたの質問ではケースの場合、これは動作します:
var methods = typeof (Messages).GetMethods(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Static);
foreach(var method in methods)
{
Console.WriteLine(method.Name);
}
あなたが他のデータが必要な場合(たとえば、メソッドを継承し親クラスから)、あなたはBindingFlagsの他の組み合わせが必要です。
'Messages'は_class_の名前です。関数は 'Saved'になります。あなたは何をしたいですか? –
@Etienne de Martel、次回は適切な編集を行うことができます。 – ocodo
@エティエンヌ保存したものは何も意味しませんでした – Amged