То, что вы ищете, это Abstract Factory
шаблон проектирования. Что вам нужно сделать, это: создать базовый класс для ваших классов объектов: public abstract class BaseClass { }
Затем извлечь классы, которые вы хотите создать из базового класса, при перемещении общих атрибутов в базовый класс:
public class DerivedClassA : BaseClass { }
public class DerivedClassB : BaseClass { }
Теперь создайте абстрактный фабричный класс, который принимает аргумент, а затем выбирает класс на его основе:
public static class AbstractFactory
{
public static BaseClass Create(string arg)
{
switch (arg)
{
case "A":
return new DerivedClassA();
case "B":
return new DerivedClassB();
default:
throw new ArgumentException(nameof(arg));
}
}
}
Все это работает благодаря полиморфизму. Полиморфизм и абстрактный дизайн фабрики являются широко известными концепциями, поэтому вы можете легко найти больше информации о них в Интернете.