2016-11-11 2 views
0

По существу я стремлюсь, чтобы получить что-то вроде следующего кода в качестве выхода из моего CodeDom:Как создать анонимный тип, используя CodeDom

var foo = new { variable1 = "value", variable2 = 5 }; 

Я не буду просто использовать его для присваивания значения переменной, но я хотел простой пример того, как создать анонимный тип. Я не уверен, что этот точный код можно достичь, но если есть какая-то работа вокруг, вы могли бы указать мне в сторону, я был бы очень обязан.

Я посмотрел на CodeObjectCreateExpression, и я не думаю, что это будет делать то, что я ищу, и я не могу найти что-нибудь еще, что близко.

Заранее благодарим за помощь и любую помощь.

+0

Я думаю, вы должны использовать кортеж вместо этого. –

+0

Почему бы не играть вокруг динамических типов? Пример: http://stackoverflow.com/questions/3740021/how-to-dynamic-new-anonymous-class – Innat3

+1

CodeDom - вещь из прошлого. Он никогда не выполнял эволюцию .NET (читай «C#»). Microsoft приложила все усилия к Roslyn вместо этого. Единственное решение - использовать фрагменты CodeDom –

ответ

2

CodeDOM пытается быть нейтральным по отношению к языку и не обновляется в течение очень длительного времени, поэтому я не думаю, что вы можете использовать любой из его встроенных типов для этого. Но вы можете использовать CodeSnippetExpression, чтобы ввести этот код в строку:

var expression = new CodeSnippetExpression("new { variable1 = \"value\", variable2 = 5 }"); 
var statement = new CodeVariableDeclarationStatement("var", "foo", expression); 
+0

Это будет сделано для случая, который у меня есть, не знал, что вы можете это сделать! благодаря – abarnybox

Смежные вопросы