Можно ли объявить анонимный тип в C # с переменной / динамическим набором полей?

в C #, я хотел бы выяснить, можно ли выявить, если можно объявить анонимный тип, где поля не известны до время.

Например, если у меня есть список пар ключевых / значений, могу ли я объявить анонимный тип на основе содержимого этого списка? Специфический случай, с которым я работаю, является прохождение параметров для даппера, где я не знаю заранее, сколько у меня будет параметров.

List<Tuple<string, string>> paramList = new List<Tuple<string, string>>() {
    new Tuple<string, string>("key1", "value1"),
    new Tuple<string, string>("key2", "value2")
    ...
};

Я хотел бы преобразовать этот список (или эквивалентную карту) в анонимный тип, который я могу передать в Dapper в качестве параметров запроса. Таким образом, в идеале указанный список будет выглядеть так, как это будет выглядеть так, если она определяется как анонимный тип:

new { key1=value1, key2=value2, ... }

Я видел несколько вопросов на Stackoverflow, спрашивая о продлен анонимных типов после того, как они будут объявлены («объекты Extendo «), или объявляя произвольные поля на объекте после его создания, но мне не нужно это делать ... Мне просто нужно динамично объявить типы. Мое подозрение заключается в том, что он потребует какого-то необычного отражения, если это возможно вообще.

Мое понимание состоит в том, что компилятор определяет тип анонимных классов под капотом во время компиляции, поэтому, если поля этого класса недоступны до времени выполнения, мне не удалось. Сейс моего использования может на самом деле не отличаться от реальности, чем использование «объекта Extendo» для определения произвольных полей, когда.

В качестве альтернативы, если кто-то знает лучшего способа пройти параметры запроса к DAPPER (вместо объявления анонимного класса), я бы тоже хотел слышать об этом.

Спасибо!

Обновление

Извините за задержку в возвращении к этому! Эти ответы были замечательными, я бы хотел дать указывает всем. Я оказался с использованием решения JBTULE (с помощью редактирования SAM SAFFRON), передавая идинамические параметры до даппера, поэтому я чувствовал, что должен был дать ему ответ. Другие ответы были также хорошими и ответы на конкретные вопросы, которые я спросил. Я действительно ценю все время на это!

10
задан Egahn 22 September 2011 в 02:36
поделиться