当前位置:  开发笔记 > 编程语言 > 正文

MethodInfo.Invoke with out Parameter

如何解决《MethodInfo.InvokewithoutParameter》经验,为你挑选了1个好方法。

我尝试做的示例代码肯定会比我的英文做得更好:

public bool IsNumericValueInBounds (string value, Type numericType)
{
  double d = double.NaN;     

  bool inBounds = (bool)numericType.GetMethod ("TryParse").Invoke (null, new object[] { value, d });

  return inBounds;
}

不幸的是,TryParse方法需要一个out参数,所以这不起作用.任何想法如何解决这个问题?

(ps:这不是鸭子打字的一个很好的例子吗? - 因为我知道每个numericType都有一个"TryParse"或者我错了?)



1> TcKs..:
public static bool TryParse( string text, out int number ) { .. }

MethodInfo method = GetTryParseMethodInfo();
object[] parameters = new object[]{ "12345", null }
object result = method.Invoke( null, parameters );
bool blResult = (bool)result;
if ( blResult ) {
    int parsedNumber = (int)parameters[1];
}


如果有人想知道为什么这样做,参数数组是一个对象数组,索引1处的空对象被out参数值替换.如果你在数组中放入一个变量(例如,new object [] {"123",myVar};)那么在Invoke之后myVar的值不会改变,但是参数[1]仍将包含out参数值.
推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有