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()
    {
    }
}
 
    