Как я могу добавить хеш-таблицу в качестве объекта в другую хеш-таблицу. Установлен параметр Strict On? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь создать объект в VB. net, который содержит набор пар ключ / значение, значениями которых могут быть строки, целые числа или другие объекты, содержащие пары ключ / значение.

Следующий код работает так, как я ожидал; Я могу добавить ключи / значения в хэш-таблицу, включая другую хеш-таблицу, в которую я также могу добавлять ключи / значения. Я также могу считывать значения из объекта.

Dim ht As Hashtable = New Hashtable

    ht.Add("Item1", "Item1 Description")
    ht.Add("Item2", 42)

    ht.Add("Item3", New Hashtable)
    ht.Item("Item3").Add("Item3a", "Item3a Description")
    ht.Item("Item3").Add("Item3b", "Item3b Description")

    Console.WriteLine(ht.Item("Item3")("Item3b"))

Однако это работает, только если 'Option Strict' не установлен. Добавление Option Strict On дает мне ошибку: «BC30574 Option Strict On запрещает позднее связывание».

Мой вопрос: «Как я могу установить хеш-таблицу в качестве значения внутри другой хеш-таблицы, если установлен Option Strict On?»

Я открыт для использования коллекций, отличных от хэш-таблицы, если именно этот выбор вызывает проблему. У меня нет возможности установить Option Strict Off, так как это для блока 'invoke code' рабочего процесса Ui Path.

Спасибо!

1 Ответ

1 голос
/ 05 августа 2020

Существуют разные способы, как показывает код ниже:

    Dim ht As Hashtable = New Hashtable

    ht.Add("Item1", "Item1 Description")
    ht.Add("Item2", 42)

    ht.Add("Item3", New Hashtable From {{"Item3_1", "Item3_1 Description"},
                                        {"Item3_2", "Item3_3 Description"},
                                        {"Item3_3", "Item3_3 Description"}})


    CType(ht.Item("Item3"), Hashtable).Add("Item3_4", "Item3_4 Description")
    CType(ht.Item("Item3"), Hashtable).Item("Item3_1") = "Another description for Item3_1"

    ht.Add("Item4", New List(Of String) From {"Element1", "Element2"})
...