C #: Nenhuma conversão implícita da Classe <Criança> para a Classe <Base>

seguinte snippet não seria compilado. Com o seguinte erro:

Não é possível converter implicitamente o tipo 'Container <ChildClass>' em 'Container <BaseClass>'

class BaseClass {}
class ChildClass : BaseClass {}
class Container<T> where T : BaseClass {}
class Program {
    static void Main() {
        // why doesn't this work?
        Container<BaseClass> obj = new Container<ChildClass>(); 
    }
}

Isso é por design? Se for, qual é o motivo?

questionAnswers(8)

yourAnswerToTheQuestion