这是我正在尝试做的简化版本:
如果没有多个 if..else 子句和 switch 块,我可以模仿 Javascript 的 eval() 不寒而栗的行为来实例化 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 个报告中的哪一个的巨大 switch 块的概念,我希望有一个类似 eval 的解决方案。
最佳答案
你可以使用 Activator.CreateInstance("myAssembly", "PortrainReport");
。尽管更具可读性的方法是创建一个 Portrait Factory,它会为您创建正确的类型。