C# для VB.net - синтаксическая проблема с 2-мерным массивом

Подскажите пожалуйста, что не так с приведенным ниже кодом, я получаю Value of type '2-dimensional array of String' cannot be converted to 'System.Collections.Generic.Dictionary(Of String, String)'

Код VB.net:

MyBase.SetConfig(New EndpointHostConfig() With {
              .GlobalResponseHeaders = {
             {"Access-Control-Allow-Origin", "*"},
             {"Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"},
             {"Access-Control-Allow-Headers", "Content-Type"}
              }
            })

А вот код C#, который я использовал в качестве отправной точки:

base.SetConfig(new EndpointHostConfig
    {
        GlobalResponseHeaders = {
            { "Access-Control-Allow-Origin", "*" },
            { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
            { "Access-Control-Allow-Headers", "Content-Type" },
        },
    });

Любые предложения высоко ценится


Ниже работает нормально:

Dim CorsHeaders As New Dictionary(Of String, String)
            CorsHeaders.Add("Access-Control-Allow-Origin", "*")
            CorsHeaders.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
            CorsHeaders.Add("Access-Control-Allow-Headers", "Content-Type")

            MyBase.SetConfig(New EndpointHostConfig() With {
               .GlobalResponseHeaders = CorsHeaders
            })

2 ответа

Решение

Вам нужно вызвать конструктор Dictionary с ключевым словом From:

MyBase.SetConfig(New EndpointHostConfig() With {
   .GlobalResponseHeaders = New Dictionary(Of String, String) From {
      {"Access-Control-Allow-Origin", "*"},
      {"Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"},
      {"Access-Control-Allow-Headers", "Content-Type"}
   }
})

См. Инициализаторы коллекции (Visual Basic).

Вам нужно создать словарь, как:

GlobalResponseHeaders = new Dictionary<string, string>() 
          {
            { "Access-Control-Allow-Origin", "*" },
            { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
            { "Access-Control-Allow-Headers", "Content-Type" }
          }

См.: Как: инициализировать словарь с помощью инициализатора коллекции (Руководство по программированию в C#)

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