Другой способ иметь дело с универсальными классами, которые должны иметь возможность конструировать объекты универсального типа, но которые по какой-либо причине не могут использовать ограничение New, - это передать фабрику методам, которые должны будут создавать новые объекты универсальный тип или требует, чтобы как часть интерфейса классы, реализующие его, предоставляли средства для создания другого экземпляра. Например, при первом использовании можно определить интерфейс IFactoryFromString , который включает в себя метод «T CreateFromString (String st)», и передать такую фабрику подпрограмме, которая должна иметь возможность создавать T с заданной строкой. Например, например, для второго использования, интерфейс для чего-то, что ведет себя как узел дерева, может включать метод для создания другого подобного узла дерева. Второе использование устраняет необходимость в дополнительных фабричных классах и параметрах, но требует, чтобы один действительно имел экземпляр класса, удовлетворяющий ограничению, для создания другого.