At least `GetHashCode`, `GetType` and the non-generic `Equals` should be hidden. Examples : - http://blogs.clariusconsulting.net/kzu/how-to-hide-system-object-members-from-your-interfaces/ - https://github.com/NancyFx/Nancy/blob/master/src/Nancy/IHideObjectMembers.cs