This compiles:
    class ReplicatedBaseType
    {
    }
    class NewType: ReplicatedBaseType
    {
    }
    class Document
    {
    ReplicatedBaseType BaseObject;
    Document()
    {
     BaseObject = new NewType();
    }
}
But this does not:
    class DalBase<T> : where T: ReplicatedBaseType
    {
    }
    class DocumentTemplate
    {
    DalBase<ReplicatedBaseType> BaseCollection;
    DocumentTemplate ()
    {
    BaseCollection= new DalBase<NewType>(); // Error in this line. It seems this is not possible
    }
    }
What's the reason?