C # Usando Activator.CreateInstance

Hice una pregunta ayer sobre el uso de la reflexión o el patrón de estrategia para llamar dinámicamente a los método

Sin embargo, desde entonces he decidido cambiar los métodos en clases individuales que implementan una interfaz común. La razón es que cada clase, aunque tiene algunas similitudes, también realiza ciertos métodos únicos para esa clase.

He estado usando una estrategia como tal:

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.");
}

Sin embargo, a medida que crezca el número de clases potenciales, tendré que seguir agregando nuevas, rompiendo así la regla cerrada para la modificación.

En cambio, he usado una solución como tal:

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

Efectivamente, el parámetro _class es el nombre de la clase pasada en tiempo de ejecución. ¿Es esta una forma común de hacer esto? ¿Habrá algún problema de rendimiento con esto?

Soy bastante nuevo en la reflexión, por lo que su consejo sería bienvenido.

Respuestas a la pregunta(6)

Su respuesta a la pregunta