/// <summary> /// 动态调用方法 /// </summary> /// <param name="target">拥有该成员的类实例</param> /// <param name="parameters">方法参数</param> /// <returns></returns> public override object Invoke(object target, params object[] parameters) { if (_func == null) { _func = MethodAccessor.Initialize(_method); } return(_func(target, parameters)); }
/// <summary> /// 创建成员反射器 /// </summary> /// <param name="member">元数据</param> /// <returns></returns> public static MemberAccessorBase Create(MemberInfo member) { MemberAccessorBase m = null; if (member.MemberType == MemberTypes.Property) { m = new PropertyAccessor((PropertyInfo)member); } else if (member.MemberType == MemberTypes.Field) { m = new FieldAccessor((FieldInfo)member); } else if (member.MemberType == MemberTypes.Method) { m = new MethodAccessor((MethodInfo)member); } if (m == null) { throw new XFrameworkException("{0}.{1} not supported", member.ReflectedType, member.Name); } return(m); }