/// <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;
 }