日期:2014-05-18  浏览次数:20710 次

刚刚学习类反射,请帮忙看看哪里写错了?
C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace refent
{
    class Program
    {
        static void Main(string[] args)
        {
            Type tp = Type.GetType("FanShe");
            object o = Activator.CreateInstance(tp);    //创建实例
            MethodInfo mi = tp.GetMethod("xxx");        //反射方法
            object ret = mi.Invoke(o, null);            //执行方法
            string str = ret.ToString();                //获取结果
        }

        public double Area()
        {
            return 2.0 * 3.0;
        }
    }

    class FanShe
    {

    }
}



刚刚学习类反射,请帮忙看看哪里写错了?

------解决方案--------------------
C# 
public Object Invoke (
Object obj,
Object[] parameters
)
 
参数
obj
对其调用方法或构造函数的对象。如果方法是静态的,则忽略此参数。如果构造函数是静态的,则此参数必须为空引用(在 Visual Basic 中为 Nothing) 或定义该构造函数的类的实例。 

parameters
调用的方法或构造函数的参数列表。这是一个对象数组,这些对象与要调用的方法或构造函数的参数具有相同的数量、顺序和类型。如果没有任何参数,则 parameters 应为空引用(在 Visual Basic 中为 Nothing)。

如果此实例所表示的方法或构造函数采用 ref 参数(在 Visual Basic 中为 ByRef),使用此函数调用该方法或构造函数时,该参数不需要任何特殊属性。如果数组中的对象未用值来显式初始化,则该对象将包含该对象类型的默认值。对于引用类型的元素,该值为空引用(在 Visual Basic 中为 Nothing)。对于值类型的元素,该值为 0、0.0 或 false,具体取决于特定的元素类型。 



返回值
一个对象,包含被调用方法的返回值,如果调用的是构造函数,则为空引用(在 Visual Basic 中为 Nothing)。

O是FanShe类的实例,null是方法xxx需要的参数数组,因为xxx无参数,所有为null
:-)
------解决方案--------------------
探讨
C#
public Object Invoke (
Object obj,
Object[] parameters
)

参数
obj
对其调用方法或构造函数的对象。如果方法是静态的,则忽略此参数。如果构造函数是静态的,则此参数必须为空引用(在 Visual Basic 中为 Nothing) 或定义该构造函数的类的实例。

parameters
调用的方法或构造函数的参数列表。这是一个对象数组,这些对象与要调用的方法或构造函数的参数具有相同的数量、顺序和类型。如果没有任何参…