Резюме и вопрос
Я хочу сгенерировать код на C #, чтобы предотвратить значительное повторение и обернуть API Google так, как они делают сами, как указано в их . Страница клиентской библиотеки Net. Изменить: Их генератор, по-видимому, написан на Python. Я продолжу исследовать другие варианты .Net.
На чем сосредоточить внимание, на CodeDOM, Roslyn или еще на чем-то? Должен ли я вообще не рассматривать генерацию кода - и если да, то какой альтернативный путь мне выбрать, чтобы правильно справиться с этой ситуацией?
Подробности
Я работаю над написанием оболочки для API Google .Net, чтобы создать библиотеку API Google для PowerShell (для всех без исключения API Google). У меня уже есть работа над тремя API-интерфейсами, но поскольку мой проект обрабатывает всю аутентификацию (и ее хранение) и другие вещи, такие как разбиение на страницы, я должен в основном обернуть каждый вызов метода API для работы с моей собственной аутентификацией, чтобы пользователь не нужно об этом беспокоиться. Это приводит к множеству повторяющихся методов инкапсуляции кода, которые уже существуют в библиотеках .Net:
public Data.Asp Get(string userKey, int codeId)
{
//I have to wrap their get method with my own using GetService(), for example
return GetService().Asps.Get(userKey, codeId).Execute();
}
Поскольку все это основано на информации, которая существует либо через Google Discovery API, либо через базовые клиентские библиотеки , Я чувствую, что должен быть какой-то способ сгенерировать код и избавить мои руки от некоторых проблем.
Немного предыстории и сопутствующей информации
На главной странице библиотек Google API .Net Client указано:
Исходный код для отдельных API Google создается программно с использованием Discovery API.
Я хотел бы сделать что-то подобное, хотя понятия не имею, на чем сосредоточить свое время и исследования. Я просмотрел CodeDOM ( и присущие ограничения), Roslyn, а также некоторые различия между двое. Я также проверил текстовые шаблоны T4 для Visual Studio.
Чтобы быть ясным, я не хочу генерировать код во время выполнения, как если бы с чем-то вроде Reflection, я хочу сгенерировать биты библиотеки - хотя я не уверен, ищу ли я < генерации href = "https://stackoverflow.com/questions/113286/do-you-create-your-own-code-generators?rq=1"> активного или пассивного пока нет.