使用公共静态值以编程方式识别类

时间:2013-10-08 07:12:03

标签: .net static-members

在报表应用程序中,我有许多不同类型的图表,每个图表都使用特定类中的代码输出。例如。 clsPieChart,clsBarChart等。每个都派生自基类clsChartBase。

现在,报告可以动态组合在一起,因此数据库中的每种类型的图表都有一个字符串ID代码,例如。 “馅饼”,“酒吧”等。

我的解决方案是在每个类中使用一个公共静态变量来匹配数据库代码,例如:

Class clsPieChart
  Inherits clsChartBase
  Public ReadOnly Shared _ChartID As String = "pie" ' Each class has one of these.

这就是我如何识别需要实例化哪个类来处理报告的这一部分。这是一种合理的方法,还是有更好的方法来做这类事情?

2 个答案:

答案 0 :(得分:1)

我建议改为使用Dictionary(Of String, Type) - 将所有信息保存在一个地方,这意味着您可以通过编程方式执行映射。当然,您也可以在另一个方向上进行另一个映射 - 并且可以从第一个映射中自动生成(例如在LINQ中使用ToDictionary())。

我还强烈建议您删除类名的cls前缀 - 值得阅读Microsoft's naming conventions,以便您的代码是惯用的。

答案 1 :(得分:0)

您可以TypeOf obj Is YourClass来识别对象的类。您将摆脱在类中保留共享变量。