Why can't my public class extend an internal class?
I really don't get it. If the base class is abstract and only intended to be used to provide common functionality to public subclasses defined in the assembly, why shouldn't it be declared internal? I don't want the abstract class to be visible to code outside the assembly. I don't want external code to know about it. By inheriting from a class, you expose the functionality of the base class through your child. Since the child class has higher visibility than its parent, you would be exposing members that would otherwise be protected. You can't violate the protection level of the parent class