Как вернуть имя функции? - PullRequest
       1

Как вернуть имя функции?

2 голосов
/ 09 сентября 2011

Я написал класс и хочу вернуть имена функций, которые я реализовал внутри класса.

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

Просто я хочу знать, как узнать имя функции (то есть fun), а не возвращаемое значение этой функции.

Ответы [ 5 ]

4 голосов
/ 09 сентября 2011
public static void TraceContext(string messageFormat)
{
    Trace.WriteLine(string.Format(messageFormat, 
        new System.Diagnostics.StackFrame(1).GetMethod().Name));
}

См. Как: получить имя метода программно для трассировки

3 голосов
/ 09 сентября 2011

Вам нужно использовать отражение, попробуйте http://www.csharp -examples.net / get-method-names /

1 голос
/ 09 сентября 2011

Для случая в вашем вопросе это будет работать:

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

Если вам нужны другие данные (например, унаследованные методы из родительского класса), вам понадобятся другие комбинации BindingFlags .

1 голос
/ 09 сентября 2011

Вы можете использовать отражение, чтобы сделать это

typeof(Messages).GetMethods(BindingFlags.Instance | BindingFlags.Public)
.Select(m=>m.Name)
.ToArray()
0 голосов
/ 09 сентября 2011

Хм, а что?Имя Class - это Сообщения. Функция называется Сохранена.Либо вы сделали опечатку, либо пропустили что-то важное в своем коде / описании.

В любом случае нужная вам функциональность содержится в пространстве имен Reflection.

Без обид, но, исходя из того, как вы сформулировали свое описание, я предполагаю, что не имею предварительных знаний о рефлексии, и в этом случае я рекомендую следующее вводное руководство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...