这是我正在尝试做的事情的简化版本:
在没有多个 if..else 子句和 switch block 的情况下,我可以模仿 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 种样式,我希望有一个类似 eval 的解决方案,而不是考虑使用嵌套的 if..else 语句来确定要使用 900 个报告中的哪一个的巨大开关 block 的概念。
最佳答案
你可以使用 Activator.CreateInstance("myAssembly", "PortrainReport");
.虽然更具可读性的方法是创建一个 Portrait Factory,它会为您创建正确的类型。
关于C#:在同一条语句中动态实例化不同的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603476/