When you are searching using the Client class, inheritance is supported out of the box. For example, you have two classes, User and Author. If you search for Users, you also get matching Authors back.
searchResult = client.Search<User>() .For("John") .InField(x => x.Name) .GetResult(); var isUser = (searchResult.First is User); //isUser IS true var isAuthor = (searchResult.First is Author); //isAuthor MIGHT be true
In addition, you can search over all types that implement a specific interface.