有没有办法做到这一点?
public MyDic as new Dictionary(Of string,Object)
MyDic.Add("SomeName",new object)
' GetValue is a Extension method and uses dic.TryGetValue(...)
ReDim MyDic.GetValue("SomeName") as New DataRow
我要做的是在运行时定义所需的变量并将其作为新定义的类型
进行访问有可能吗?
还有其他方法或建议可以实现吗?
感谢您的时间
答案 0 :(得分:1)
修改强>
根据您的评论,我正在修改答案。我会留下原件,以防其他人像我最初那样理解你的问题。
您无法修改方法的返回类型并将其返回到字典中。但你可以做的是直接在字典中更改项目。
Dim stuff As New Dictionary(Of String, Object)
stuff.Add("SomeName", New Object())
' Later, when you have to change it.
stuff("SomeName") = 23 ' If you didn't have "SomeName" as a key, it will be created. Otherwise the value will be changed.
您可以将此包装在扩展方法中,如下所示:
<Extension>
Public Sub SetValue(dic As Dictionary(Of String, Object), valueName As String, value As Object)
If Not dic.ContainsKey(valueName) Then Throw New ArgumentOutOfRangeException ' Or whatever you want to do here
dic(valueName) = value
End Sub
原创 - 我最初认为您想确定哪种类型的对象并做出相应的响应。
不是添加新对象并尝试稍后更改,只需在有值时添加所需的项目。当你找回它时,确定它是什么并相应地处理它。我已经像你一样定义了字典。
Dim stuff As New Dictionary(Of String, Object)
stuff.Add("SomeName", 23)
Dim item = stuff.GetValue("SomeName")
If item IsNot Nothing Then
Select Case item.GetType()
Case Is = GetType(String)
Console.WriteLine("String")
Case Is = GetType(Integer)
Console.WriteLine("Integer")
End Select
End If
如果没有更多关于你要添加的内容,我无法提供更具体的内容。您可以使用它来确定整数,字符串等的作用。
我仍然建议使用一些基础来Dictionary(Of String, BaseClass)
或Dictionary(Of String, IInterface)
,你可以安全地假设你可以用你得到的值做什么。