Вот упрощенная версия того, что я пытаюсь сделать:C#: динамически создавать разные классы в одном выражении?
Не имея несколько положений if..else и переключение блоков, можно имитировать поведение Eval в JavaScript() содрогания для создания экземпляра класса в C#?
// Determine report orientation -- Portrait or Landscape
// There are 2 differently styled reports (beyond paper orientation)
string reportType = "Portrait";
GenericReport report;
report = new eval(reportType + "Report()"); // Resolves to PortraitReport()
Необходимость проистекает из того факта, что у меня есть 6 типов Crystal Reports (которые делают то же самое, но выглядит сильно отличается) для 50 государств. Каждый из них состоит из 3 стилей, вместо того, чтобы принимать понятие гигантского блока переключателей с вложенными if..else заявлениями, определяющими, какие из 900 отчетов использовать, я надеялся на подобное eval-решение.
Возможно, я не понимаю, как это работает, поэтому позвольте мне добавить это, чтобы увидеть, изменит ли он ваш ответ: Эта же строка также может развернуться и оценить значение «LandscapeReport()» на основе значения строка reportType. Ваша идея по-прежнему работает с одной строкой кода? –
А теперь я вижу, что вы, ребята, говорите об одном и том же. Я собираюсь проверить это и отправить обратно. –
У меня все еще немного неприятностей с Активатором ... Я начинаю думать, что Активатор не хочет создавать экземпляр объекта отчета CrystalReports таким образом, поскольку программа бросает «TypeLoadException» был необработанным «ошибка во время выполнения в строке, где я пытаюсь создать экземпляр отчета. Думаю, мне, возможно, придется посмотреть на возможность Фабрики. –