Есть ли способ для имени оператора получить доступ к параметрам метода (за пределами того же метода)?
Возьмем следующий класс и метод:
public class Foo
public Foo Create(string bar) {
return new Foo(bar);
}
Таким образом, получение "Create" очевидно: nameof(Foo.Create)
Есть ли способ получить "бар", кроме использования отражения, чтобы прочитать параметры во время выполнения?
Ответы
Ответ 1
Нет. Невозможно получить имена параметров извне метода, используя nameof
. nameof
не работает для параметров метода, если вы хотите, чтобы имя на вызывающей стороне (для вызываемого явно работает). Другие методы, о которых вы говорили, как отражение, действительно работают.
var parameterNames = typeof(Program)
.GetMethod(nameof(Program.Main)).GetParameters()
.Select(p => p.Name);
Ответ 2
Я знаю, что это поздний ответ, но я нашел довольно простое и достаточно элегантное решение проблемы, которое не требует размышлений.
Изменить класс Foo
как это...
public class Foo
public static string CreateName = nameof(Create);
public Foo Create(string bar) {
return new Foo(bar);
}
}
... тогда в других классах вы можете сделать...
Foo.CreateName
... который даст вам название метода.