Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB基于字符串变量引用模块中的属性_Vb.net_Properties - Fatal编程技术网

Vb.net VB基于字符串变量引用模块中的属性

Vb.net VB基于字符串变量引用模块中的属性,vb.net,properties,Vb.net,Properties,我有一个公共属性模块(根据它的价值命名为常量),其中没有一个与任何特定对象相关联。我需要根据字符串变量中的值调用这些属性。该变量的值将是我需要使用的属性的名称 我所知道的最好的候选对象是CallByName,但这需要一个对象来获取属性,正如我所提到的,在本例中不存在这个对象 例如,变量应采用的第一个值是“Master”。到时候,我希望能够使用该变量调用属性Master()(声明为公共属性的字符串数组) 提前谢谢 在我听来,您试图以枚举值相同的方式使用字符串。有几种方法可以做到这一点,但这里有一个

我有一个公共属性模块(根据它的价值命名为常量),其中没有一个与任何特定对象相关联。我需要根据字符串变量中的值调用这些属性。该变量的值将是我需要使用的属性的名称

我所知道的最好的候选对象是CallByName,但这需要一个对象来获取属性,正如我所提到的,在本例中不存在这个对象

例如,变量应采用的第一个值是“Master”。到时候,我希望能够使用该变量调用属性Master()(声明为公共属性的字符串数组)


提前谢谢

在我听来,您试图以枚举值相同的方式使用字符串。有几种方法可以做到这一点,但这里有一个简单的例子,可以帮助您思考解决字符串到常量编程问题的方法

Namespace Constants

Public Enum Priorities
    Unknown = 0
    Low = 1
    Medium = 2
    High = 3
    VeryHigh = 4
End Enum

Public Class ConverterTo
    Public Function Priority(ByVal value As String) As Constants.Priorities
        Select Case value.ToLower
            Case "low"
                Return Priorities.Low
            Case "medium"
                Return Priorities.Medium
            Case "high"
                Return Priorities.High
            Case "veryhigh"
                Return Priorities.VeryHigh
            Case Else
                Return Priorities.Unknown
        End Select
    End Function
End Class
End Namespace

所以我最后要做的就是声明一个ConsObj的实例(在最初发布后有一个重命名),然后该对象现在被传递给从属性输出值的函数


感谢大家的建议,有些人给了我一些想法,告诉我如何在脚本的其他地方做得更好。很抱歉,我从未发布过代码,只是有点麻烦,因为代码位于网络上,没有internet访问。

您可以使用反射来完成此操作。然而,值得一提的是,在大多数情况下,使用
字典
对象来存储这些命名值将是一个更好的设计。进一步考虑,我给出的示例可能不是最好的。我需要引用的大多数属性都是对象列表。当我将来自一个来源(我公司的数据库)的数据与来自客户数据库的数据进行比较时,它们会被填充。然后,我打算使用列表来输出问题记录,其中我们有冲突的数据,或者我们中的一个或两个都有坏数据。如果我简单地声明一个虚拟对象类来存储属性,这样我就可以使用反射或callbyname,那会更好吗?现在这听起来绝对像是字典的工作。您可以制作一个字典,其中包含一个对象列表,作为每个键的值。例如,您可以创建一个字典(字符串、列表(对象))。我已经设置了所需的字典,它们似乎正在工作。但在将来,构建一组公共存储属性以供多个报告使用的最佳方法是什么?我的想法是通过一个报告名称的字符串数组进行交互,将一个变量设置为我试图生成的报告类型的名称,然后使用该变量查找不同类型的多个属性。如果没有更多细节,这将很难回答。我会更改一些名称,但基本的想法是(使用
Select Case
)是合理的…此外,如果您有很多这样的情况,您应该将其转换为字典查找。抱歉,但不是这么多。目的是属性用于存储计数和对象(正在计数的项目包括其所有详细信息,以便我可以从中推出任何我想要的值).史蒂文提到的字典的想法让我有了很大的收获。我遇到了一些麻烦,但我确信这只是一个调整我的实现的问题。也许你可以调整这个问题,以包括这些信息和你迄今为止的代码,这样我们都可以为一个好的解决方案做出贡献。