Większość osób domaga się metaprogramu w swoim ulubionym języku. To nie działa, jeśli język nie obsługuje dobrze metaprogramowania; inne odpowiedzi zauważyły, że C# nie.
Sposobem na to jest do zrobienia metaprogramowanie z poza językiem, używając program transformation tools. Takie narzędzia mogą analizować kod źródłowy i przeprowadzać na nim dowolne transformacje (to i tak robi metaprogramowanie), a następnie wypluć zmieniony program.
Jeśli posiadasz uniwersalny system transformacji programów, który może analizować dowolne języki, możesz dokonać metaprogramowania na/w dowolnym języku. Zobacz nasze DMS Software Reengineering Toolkit dla takiego narzędzia, które ma solidne przednie końce dla C, C++, Java, C#, COBOL, PHP i wielu innych języków programowania, i było używane do metaprogramowania na wszystkich z nich.
DMS powiedzie się, ponieważ zapewnia regularną metodę i infrastrukturę wsparcia dla pełnego dostępu do struktury programu jako AST, a w większości przypadków dodatkowe dane, takie jak tabele symboli, informacje o typach, kontrola i analiza przepływu danych, wszystko, co niezbędne do zrobienia wyrafinowanego manipulowanie programami.
EDYCJA (w odpowiedzi na komentarz): Można zastosować DMS do realizacji zadania OP na C#.
Chociaż nie jest to możliwe w języku C#, jest to możliwe w alternatywnych językach .NET o silnym typie, takich jak [Boo] (http://boo.codehaus.org/) i [Nemerle] (http://nemerle.org/Main_Page). –
Możesz przeczytać Metaprogramming w .NET http://www.manning.com/hazzard przez Kevina Hazzarda i Jason Bocka –
@ Jordão: Boo jest bardzo różnym językiem, a Nemerle jest mniej lub bardziej martwy, ponieważ Jetbrains wynajął mózgi. Być może warto wspomnieć o Script.NET. –