Общедоступный словарь в словарном методе

Я пытаюсь получить доступ к словарю, созданному в todictionary метод в других процедурах.

Это то, что я хотел бы, но я получаю ошибку компиляции.

Public dctOPT As New Dictionary(Of Integer, Object)

 Sub Get_RTD_OPT()

        Dim lstOPT = From C In DATA.CHAINs, O In DATA.OPTIONs, U In DATA.UDLies
                     Where C.CONTRACT = O.CONTRACT And O.UDLY_SYM = U.UDLY_SYM
                     Select C.ID, C.P_C, C.STRIKE, C.CONTRACT,
                        O.OPT_EXCHANGE, O.OPT_EXPIRY, O.OPT_SEC_TYPE, O.SYM,
                         U.CURRENCY

        dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID)

end sub

Это компилируется, но тогда я не могу получить доступ dctOPT в других процедурах.

dim dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID)

Нужно ли мне копировать dctOPT в другой общедоступный словарь или есть более простой метод? Любые предложения, пожалуйста?

1 ответ

Решение

Ты нуждаешься в этом:

Public dctOPT As New Dictionary(Of Integer, Object)

Sub Get_RTD_OPT()

    Dim lstOPT =
        From C In DATA.CHAINs, O In DATA.OPTIONs, U In DATA.UDLies
        Where C.CONTRACT = O.CONTRACT And O.UDLY_SYM = U.UDLY_SYM
        Select C.ID, C.P_C, C.STRIKE, C.CONTRACT,
           O.OPT_EXCHANGE, O.OPT_EXPIRY, O.OPT_SEC_TYPE, O.SYM,
            U.CURRENCY

    dctOPT = lstOPT.ToDictionary(Function(Z) Z.ID, Function(Z) CType(Z, Object))

End Sub

Без Function(Z) CType(Z, Object) тип создаваемого словаря был Dictionary(Of Integer, <anonymous>) и это не может быть непосредственно назначено Dictionary(Of Integer, Object), Приведение правильно генерирует словарь правильного типа.

Другие вопросы по тегам