【发布时间】:2014-05-13 05:59:02
【问题描述】:
我有一个公共属性模块(根据它的价值命名为常量),其中没有一个与任何特定对象相关联。我需要根据字符串变量中的值调用这些属性。该变量的值将是我需要使用的属性的名称。
我所知道的此类事情的最佳候选者是 CallByName,但这需要一个对象来获取属性,正如我所提到的,在这种情况下不存在。
例如,变量应该取的第一个值是“Master”。到时候我希望能够使用该变量来调用属性 Master()(声明为公共属性的字符串数组)。
提前致谢!
【问题讨论】:
-
你可以使用反射来做到这一点。不过值得一提的是,在大多数情况下,使用
Dictionary对象来存储这些命名值会是更好的设计。 -
进一步思考我给出的例子可能不是最好的。我需要引用的大多数属性都是对象列表。当我将来自一个来源(我公司的数据库)的数据与来自我们客户的数据库的数据进行比较时,它们会被填充。然后我打算使用这些列表来输出我们有冲突数据的问题记录,或者我们中的一个或两个有坏数据。如果我简单地声明一个虚拟对象类来存储属性以便我可以使用反射或 callbyname 会更好吗?
-
现在这听起来绝对像是字典的工作。您可以制作一个包含对象列表的字典,因为它是每个键的值。例如,您可以创建一个 Dictionary(Of String, List(Of Object))。
-
我已经设置了我需要的字典,它们似乎正在工作。对于未来,构建一组通用存储属性以供多个报告使用的最佳方式是什么?我的想法是我将通过报告名称的字符串数组进行交互,将变量设置为我要生成的报告类型的名称,然后使用该变量查找不同类型的多个属性。
-
如果没有更多细节,这将很难回答。
标签: vb.net properties