C#:在同一条语句中动态实例化不同的类?

标签 c# crystal-reports class eval instantiation

这是我正在尝试做的事情的简化版本:

在没有多个 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/

相关文章:

c# - Keras img_to_array 中有什么? (与 C# 中的位图数组相比)

c# - 如何将文件夹文件加载到 ListView 中?

crystal-reports - 如何更改 Crystal Reports 中子报表的页面大小? (SAP Crystal 报表 2016 SP 5)

c++ - 使用命名空间代替类

c# - 如何使用 C# 检查是否以编程方式安装了 OpenOffice

c# - DotNetOpenAuth:网络表单,入门

c# - 无法加载文件或程序集 'BusinessObjects.Enterprise.Sdk.ZipLib.netmodule'

c# - 无法在 C# 上设置 DataDefinition.FormulaFields.Item.Text (Crystal Reports 13)

ios - 使用 Codable 使用相同的 key 解码不同的类

c++ - 如何在 C++ 中初始化类中的私有(private)变量?