我正在使用反射来获取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参数。
任何人都知道我在这里做错了吗?
答案 0 :(得分:39)
试试这个
typeof(Int32).GetMethod("TryParse",
BindingFlags.Static | BindingFlags.Public,
null,
new Type[] { typeof(string), typeof(Int32).MakeByRefType() },
null);
答案 1 :(得分:3)
喜欢@ Jab&s;但更短一些:
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];