反射调用有参和无参方法的通用代码块结构
// 要反射的类型
Type controlType = node.FirstProperty.DesignItem.ComponentType;
// 反射类型的实例对象,可以直接提供
object controlObject = node.FirstProperty.DesignItem.Component;
// 也可以通过下面注释所示反射构造实例
// object[] parameters = new object[] { value };
// var controlObject = controlType.InvokeMember(
// null,BindingFlags.CreateInstance, null, null, parameters );
if (controlType != null)
{
// 设置反射搜索范围:私有的非静态的方法
BindingFlags flag = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod;
// 搜索指定搜索范围的名称为"UpdateValue"的方法
MethodInfo method = controlType.GetMethod("UpdateValue",flag);
if (method != null)//调用前判断是否存在这个方法
{
// 方法的参数,如果无参,= 右边填null即可
object[] parameters = new object[] { value };
// 反射调用方法
method.Invoke(controlObject, flag, Type.DefaultBinder, parameters , null);
}
}