I am (still) converting an old asp web app / vb6 dll to aspx / vb.net I am now biting on a fairly simple function in vbscript: the execute() function What the vbscript does is the following: It reads in a variable name and its (string) value from a database in a loop. The variables were then created and set to the value by calling the execute functio:
here is a code snippet:
do while ...
strVarName = ds("varname")
strVarValue = ds("varvalue")
call execute(strVarName=""" & strVarValue & """")
after this there existed a variable with the name and value as requested In vb.net I would like to do something similar. I will have to declare all possible variables I suppose, but it would be nice to be able to keep the loop.
If not I'll have to recode a fill procedure that assigns all values, but maybe someone here has a good suggestion
Do While True
strVarName = ds.Tables("MyTable")(iRow)("varname")
strVarValue = ds.Tables("MyTable")(iRow)("varvalue")
If Execute(strVarName, strVarValue) Then Exit Do
'If the function returns True, the loop will exit.
Private Function Execute(ByVal sVarName As String, ByVal sVarValue As String) As Boolean
'Your code here
vbScript had the functions, Execute and ExcecuteGlobal which allowed runtime execution of VB expressions (strings) with various levels of scoping. As I recall, this feature is not available in VB.net 2010 but might be have been restored in VB.net 2012. If you really need to execute dynamic code then you might look into VB 2012. If you don't mind handling the dynamic expressions yourself (ie maintaining your own symbol table) then TnTinMN's suggestion is likely your best bet.
Hm, I'm sure I marked this as solved two days ago. Anyway, the dictionary solution was the one that matched closest. I still had to replace the hundtred or so of calls to doSomethingwith(VarName) with doSomethingwith(Mydictionarylist("varname")), but I have become quite proficient at search./.replace using regular expressions