Browsing the class System.Dynamic.DynamicObject, I find it is concrete (not-abstract) class, but preventing from creating an instance of it directly by making its default constructor protected.
So what is the point of not making it just abstract with a public constructor ?
Clarification:
class Base1
{
protected Base1() // protected constructor, concrete class
{
}
}
class Derived1 : Base1
{
public Derived1() : base()
{
}
}
abstract class Base2
{
public Base2() // public constructor, abstract class
{
}
}
class Derived2 : Base2
{
public Derived2() : base()
{
}
}
abstractkeyword to enable abstract methods, so perhaps they simply only useabstracton abstract classes with abstract methods?abstractclass without anyabstractmemberabstractis not used to restrict access to constructor, I guess it's the main point. class is not abstract but author decided to restrict access