如何返回函数名称?

时间:2011-09-09 00:56:33

标签: c# .net oop

我写了一个类,我想返回我在类中实现的函数的名称。

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

我只想知道如何知道函数的名称(fun),而不知道该函数的返回值。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

您需要使用反射,请尝试http://www.csharp-examples.net/get-method-names/

答案 2 :(得分:1)

您可以使用反射来执行此操作

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

答案 3 :(得分:1)

对于你问题中的情况,这将有效:

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

如果您需要其他数据(例如,来自父类的继承方法),则需要BindingFlags的其他组合。

答案 4 :(得分:0)

嗯,什么? Class 名称是Messages。 功能名为“已保存”。 要么你做了一个错字,要么你已经从你的代码/描述中省略了一些重要内容。

在任何情况下,您所使用的功能都包含在Reflection命名空间中。

没有违法行为,但根据你的描述如何措辞,我将假设没有反思的先验知识,在这种情况下我推荐以下introductory tutorial