На StackExchange есть несколько вопросов, но они не охватывают тот же случай. Прочтите его, прежде чем отмечать его как дубликат!CodeDom InitExpression для типизированного словаря типа
Использование CodeDom в C#, я пытаюсь сгенерировать выражение Init для словаря. например
Dictionary<int,string> dict = new Dictionary<int,string>{
{1,"one"},
{2,"two"}
};
Я нашел другие решения, которые используют CodeExpression для создания экземпляра объекта, а затем несколько CodeStatements, населяющих экземпляр, но из-за кучу скучных причин того, что это путь, который я предпочел бы не пойти вниз ,
Чтобы уточнить, так как я не могу использовать несколько CodeStatements, я своего рода нужно избежать образования что-то вроде этого:
Dictionary<int,string> dict = new Dictionary<int,string>();
dict.Add(1,"one");
dict.Add(2,"two");
Мой вопрос:Есть ли способ для генерации кода, как это с помощью только CodeDom.CodeExpression (s)?
Я уверен, что на данный момент ответ «нет», но подумал, что стоит на всякий случай спросить.
Итак, у вас есть 100000 предметов, которые необходимо вставить в словарь? Слишком скучно писать этот код? Это ваша проблема? Откуда берутся эти предметы? Из базы данных или что-то еще? –
Является ли 'CodeSnippetExpression' (т. Е. Строя выражение самостоятельно как строку) приемлемым? – svick
@ KosalaW Это больше похоже на то, что я пытаюсь отразить корпус данных, который поддерживает словари внутри списков внутри структур внутри списков внутри структур и т. Д. И т. Д. Построение дерева выражений для инициализации этих вещей отлично работает, но после добавления операторов я должен начать беспокоиться о контексте (например, они должны быть в методе и не могут использоваться для инициализации массива) – JBeFat