Вы не говорите, но я предполагаю, что каждый из других типов происходит от PrinterFactory
(например: public class Nadelbaum : PrinterFactory { ... }
).
Обычно для этого вы используете static
фабричный метод.
public abstract class PrinterFactory
{
public static PrinterFactory GetInstance(string instanceType) {
switch (instanceType) {
case "Nadelbaum": return new Nadelbaum();
case "Laubbaum": return new Laubbaum();
// etc
}
}
}
Тогда вы можете использовать:
var printer = PrinterFactory.GetInstance("Nadelbaum");
и printer
будут определены как тип PrinterFactory
, но на самом деле будут экземпляром Nadelbaum
.
Вы не указали, как вы выбираете, какой тип экземпляра создавать, поэтому я просто показал и пример со строками, но вы, конечно, можете выбрать любой критерий для выбора типа на основе любых параметров, которые вы передаете в фабричный метод.