Может применить паттерн Abstract Factory вместо хранения типа? То есть будет объект (фабрика) который отвечает за инстанцирование экземпляра конкретного типа, при этом класс A «знает» только об интерфейсе фабрики и НЕ знает о конкретных реализациях класса B.