Także jeśli znasz metody statyczne i mieć do niego dostęp w czasie kompilacji, można użyć Expression
klasę dostać MethodInfo
bez bezpośrednio przy użyciu odbicia (co może powodować dodatkowe błędy runtime):
public static void Main()
{
MethodInfo staticMethodInfo = GetMethodInfo(() => SampleStaticMethod(0, null));
Console.WriteLine(staticMethodInfo.ToString());
}
//Method that is used to get MethodInfo from an expression with a static method call
public static MethodInfo GetMethodInfo(Expression<Action> expression)
{
var member = expression.Body as MethodCallExpression;
if (member != null)
return member.Method;
throw new ArgumentException("Expression is not a method", "expression");
}
public static string SampleStaticMethod(int a, string b)
{
return a.ToString() + b.ToLower();
}
Oto rzeczywiste parametry przekazane do SampleStaticMethod
nie ma znaczenia, jak tylko ciało SampleStaticMethod
jest używany, więc możesz przekazać null
i wartości domyślne do niego.
W takim przypadku otrzymuję 0 metod wstecz ... Czy to ma znaczenie, jeśli uruchomię to z tej samej klasy lub z głównej metody? – Urik
Zaktualizowano ... aby uzyskać wszystkie metody, zarówno statyczne, jak i instancyjne, publiczne i niepubliczne –
Jak urok! Dzięki! – Urik