Перед тем, как запускать и использовать среду внедрения зависимостей, прочтите ее критику. знак равно

я задал вопрос об использовании рефлексии или шаблона стратегии для динамического вызова методов.

Однако с тех пор я решил изменить методы на отдельные классы, которые реализуют общий интерфейс. Причина в том, что каждый класс, имея некоторое сходство, также выполняет определенные методы, уникальные для этого класса.

Я использовал стратегию как таковую:

switch (method)
{
    case "Pivot":
        return new Pivot(originalData);
    case "GroupBy":
        return new GroupBy(originalData);
    case "Standard deviation":
        return new StandardDeviation(originalData);
    case "% phospho PRAS Protein":
        return new PhosphoPRASPercentage(originalData);
    case "AveragePPPperTreatment":
        return new AveragePPPperTreatment(originalData);
    case "AvgPPPNControl":
        return new AvgPPPNControl(originalData);
    case "PercentageInhibition":
        return new PercentageInhibition(originalData);
    default:
        throw new Exception("ERROR: Method " + method + " does not exist.");
}

Однако по мере роста числа потенциальных классов мне нужно будет добавлять новые, нарушая тем самым правило закрытых для модификации.

Вместо этого я использовал решение как таковое:

var test = Activator.CreateInstance(null, "MBDDXDataViews."+ _class);
       ICalculation instance = (ICalculation)test.Unwrap();
       return instance;

Фактически, параметр _class - это имя класса, переданного во время выполнения. Это обычный способ сделать это, будут ли проблемы с производительностью?

Я довольно новичок в размышлениях, поэтому ваш совет будет приветствоваться.

Ответы на вопрос(0)

Ваш ответ на вопрос