Резюме и вопросКак создать код на основе API Google?
Я ищу для генерации кода в C# для предотвращения значительного повторения и обернуть API Google, таким образом, как они сами, как указано на их .Net Client library page. Редактировать: Their generator написан, по-видимому, на Python. Я продолжу изучение других параметров .Net.
Где я должен сосредоточить свое внимание, CodeDOM, Roslyn или что-то еще? Должен ли я вообще не рассматривать Генерирование кода - и если да, какой альтернативный путь я должен предпринять, чтобы правильно справиться с этой ситуацией?
Подробности
Я работаю над написанием обертку для API, Google .Net, чтобы сделать библиотеку API Google для PowerShell (для любых и всех Google APIs). Я уже работаю над тремя 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, а также some differences между the two. Я также проверил T4 Text Templates for Visual Studio.
Чтобы было ясно, я не ищет для генерации кода во время выполнения, как я бы с чем-то вроде Reflection, я ищу, чтобы генерировать биты библиотеки - хотя я не уверен, если я ищу active or passive поколения все же.
Посмотрите на шаблоны T4. – SLaks