如题,
我们都知道通过C#的反射机制可以获取未知类型的属性值,
比如:
propertyInfo.GetValue(obj, null).ToString();
现在我想通过反射获取未知类型的方法返回值怎么弄?
可以通过methodInfo.Invoke(obj, null)获取到返回到对象是object类型的,
可是怎么获取他的返回值呢,比如说返回值类型是string的??请大家帮帮忙,谢谢了

解决方案 »

  1.   

    methodInfo.Invoke 返回的就是方法的返回值啊
    object类型你强制类型转换次就可以了
      

  2.   

    进行一下强制转化即可
    value = (string)methodInfo.Invoke(obj, null);
      

  3.   

     internal class Reflect
        {
            private int Add(int arg0, int arg1, int arg2)
            {
                return arg0 + arg1 + arg2;
            }
        }
        class Program
        {
            internal static int CallAdd()
            {
                object target = Assembly.GetExecutingAssembly().CreateInstance("NameSpace.Reflect", true);            Type type = target.GetType();
                MethodInfo methodInfo = type.GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
     
                if (methodInfo == null)
                    return 0;
     
                object[] args = new object[] { 10, 20, 30 };
                object result = methodInfo.Invoke(target, args); 
                return Convert.ToInt32(result);
            }
        }参考
      

  4.   

    invoke之后会有个object的返回。你自己is或者as要不就强致转换一下就OK了。
      

  5.   

    (string)Object  or Object as string