/// <summary> /// Determines if a member is valid for this repository. /// </summary> /// <param name="methodBase">The member to test.</param> /// <param name="isPropertyMethod">Indicates that the method is a property getter or setter.</param> /// <returns><c>true</c> if the member is valid.</returns> protected virtual bool MemberFilter(MethodBase methodBase, bool isPropertyMethod) { if (methodBase == null) return false; if (methodBase.GetExternalVisibility() == ExternalVisibilityKind.Hidden) return false; var name = methodBase.Name; if (name.Length >= 2 && (name[0] == '$' || name[name.Length - 1] == '$')) return false; if (methodBase.IsFinalizer()) return false; if(!isPropertyMethod && methodBase.IsSpecialName){ if(methodBase.IsConstructor) return true; if(methodBase.IsOperatorOverload()) return true; return false; } return true; }