Szukam System.CodeDom
namespace dla niezależnego od języka (przynajmniej w pewnych granicach) generowania kodu źródłowego i znalazłem pewne informacje zniechęcające do korzystania z CodeDom
.Czy istnieje oficjalny zamiennik CodeDom?
Myślę, że niektóre z pominięć opisanych w this early blogpost zostały już naprawione, a fakt, że CodeDom
does not seem to provide a way to create a switch
statement nadal pozwala na - mniej wydajności? - obejścia bez zniekształcania publicznego interfejsu generowanych typów. To samo dotyczy automatic C# properties i collection initializers.
Jednak innych pominięć naprawdę nie da się obejść, takich jak inability to create finalizers, impossibility to declare extension methods lub lacking direct support of generic reference type constraints.
Należy zauważyć, że je roztwory CodeSnippetTypeMember
lub wstrzykiwania dosłownych fragmenty kodu źródłowego w jakikolwiek inny sposób nie jest zadowalające, ponieważ nie są niezależne od języka - usuwając cały punkt stosowania CodeDom
zamiast String.Format
z dosłownych fragmentów kodu.
Na koniec sugeruje się nawet, że "CodeDom to błąd, a drzewa Expression (a raczej drzewa" Statement ") są drogą naprzód" - choć bez żadnego wyjaśnienia, jak właściwie uzyskać kod źródłowy z expression tree (przy ograniczeniu, że classes cannot be declared with expression trees.
Is CodeDom nadal metodą z wyboru, że kod źródłowy wygenerowany, czy też obecny BCL oferuje żadnych niejasnych wymiany z nazwą, że nie myślę o?
http://stackoverflow.com/questions/7852926/microsoft-roslyn-vs-codedom –
@DavidBrabant (a także na [driis] (http://stackoverflow.com/users/13627/driis), który wskazywał to już wcześniej): Dziękuję, * Roslyn * to tylko jedna z nazw oprogramowania, których nie możesz znaleźć, chyba że już je znasz. Poświęcę trochę czasu na zapoznanie się z tym przed wyborem odpowiedzi odnoszącej się do tego jako przyjętego. –
@ O.R.Mapper Myślę, że to samo dotyczy nazw większości technologii w .Net: LINQ, Entity Framework lub CodeDOM. – svick