将变量名称替换为字符串

时间:2015-11-05 08:22:55

标签: vb.net replace formula

假设我有几个课程,例如class1class2。这些类可以有许多属性,甚至可以从执行更改为另一个(取决于软件的版本)。

用户可以定义一个"公式"在纯文本中,软件应该转换"变量"的名称。 (class + property)及其实际值。因此,给定class1的实例和class2的实例,我应该循环属性(和变量)并检查公式是否包含它们。对于每一个,我应该用值替换名称。

例如,我可以:

Dim myClass1 As Class1 = New Class1()
myClass1.PropertyA = "FOO"
myClass1.PropertyB = 5

Dim myClass2 As Class2 = New Class2()
myClass2.PropertyX = "BAR"
myClass2.PropertyY = 7

并且用户可以声明这个公式(这里的公式在VB.NET中简化了,但实际上它可以是SQL或不同类型。公式是纯文本,代码中的字符串也是如此):

Dim i = 0
While (i + myClass1.PropertyB) < myClass2.PropertyY
    str = "myClass1.PropertyA" & "myClass2.PropertyX"
    i += 1
End While

替换后的结果应为:

Dim i = 0
While (i + 5) < 7
    str = "FOO" & "BAR"
    i += 1
End While

现在,类和变量可能会有所不同,因此我无法搜索特定的字符串。我想我应该使用反射,但我不习惯它,如果存在更好的解决方案,我宁愿避免使用它。有什么建议和/或最佳实践吗?

1 个答案:

答案 0 :(得分:0)

这可以作为一个类或一个函数来完成 考虑一下公式。 X =(A A)+(B B)+(2 * A * B)

Public Function formularesult(Byval a1 as double,Byval b1 as double) as double
Dim x as double
x=0
Dim a as double
a=0
Dim b as double
b=0
a =a1
b=b1
x=(a*a)+(b*b)+(2*a*b)
return x
End Function

调用函数可以跟随bs 设a和b的值分别为12和20。

Dim result as double
result =formularesult(12,20)

我希望这对某人有帮助。

随时欢迎改进我的建议。