//This methods finds the right member value from a set of methods with the same name public MethodInfo GetMethodWithRightParameters(DParam[] dparams, MethodInfo[] methods) { foreach (MethodInfo mi in methods) { if (mi.MemberType == MemberTypes.Method) { //Method if (mi.GetParameters().Length == dparams.Length) { int i = 0; //It could be this one, it has the same number of parameters bool found = true; foreach (ParameterInfo inf in ((MethodInfo)mi).GetParameters()) { if ( inf.ParameterType.ToString() == dparams[i].Type || inf.ParameterType.IsAssignableFrom(Type.GetType(dparams[i].Type))) { found = true; } else { found = false; break; } i++; } if (found) return mi; } } } //Member not found... return null; }
protected void ProcessChildren(XmlNodeList l) { IEnumerator enumChildren = l.GetEnumerator(); while(enumChildren.MoveNext()) { XmlNode c = (XmlNode) enumChildren.Current; switch(c.Name) { case DMethod.IAM: AddChild(new DMethod(c)); break; case DParam.IAM: DParam dparam = new DParam(c); AddChild(dparam); // check if this is a default property if (dparam.HasDefaultValue) m_defaultProp = new Property(Identifier, dparam.DefaultValue); break; } } }