Ответ 1
Попробуйте это
typeof(Int32).GetMethod("TryParse",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] { typeof(string), typeof(Int32).MakeByRefType() },
null);
Я использую рефлексию для получения информации о методе TryParse (upvote для первого человека, чтобы угадать, почему;).
Если я вызываю:
typeof(Int32).GetMethod("Parse",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] { typeof(string) },
null);
Я возвращаю метод, но немного расширяю его:
typeof(Int32).GetMethod("TryParse",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] { typeof(string), typeof(Int32) },
null);
Я ничего не получаю. Мой spidersense говорит мне об этом, потому что второй параметр является параметром out.
Кто-нибудь знает, что я сделал здесь неправильно?
Попробуйте это
typeof(Int32).GetMethod("TryParse",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] { typeof(string), typeof(Int32).MakeByRefType() },
null);
Как @Jab, но немного короче:
var tryParseMethod = typeof(int).GetMethod(nameof(int.TryParse),
new[]
{
typeof(string),
typeof(int).MakeByRefType()
});
// use it
var parameters = new object[] { "1", null };
var success = (bool)tryParseMethod.Invoke(null, parameters);
var result = (int)parameters[1];