Making abstract classes invisible; or: hiding my BananaHuman

You can use the EditorBrowsableAttribute and apply it to your class. This will make you class disappear from Intellisense if people are using your .dll. If you have your project referenced instead of the dll it will still be visible.

Use like:

[EditorBrowsable(EditorBrowsableState.Never)]
public class BananaHuman
{
    //....
}

So if you would give me your .dll I wouldn't see BananaHuman pop up in Intellisense. But if I would inspect the Banana or Human class I would still see it inherited from BananaHuman because that IS the case. The EditorBrowsable attribute just makes it disappear from Intellisense, what is what you want.