【发布时间】:2016-01-08 07:41:08
【问题描述】:
总结和问题
我希望在 C# 中生成代码以防止大量重复,并以他们自己的方式包装 Google API,如他们的.Net Client library page 所述。 编辑:Their generator 显然是用 Python 编写的。我将继续研究其他 .Net 选项。
我应该把注意力集中在哪里,CodeDOM、Roslyn 还是其他?我应该根本不考虑代码生成吗?如果是,我应该采取什么替代方法来正确处理这种情况?
详情
我正在为 Google .Net API 编写一个包装器,以便为 PowerShell(适用于任何和所有 Google API)制作一个 Google API 库。我已经让它在三个 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 库的主页上写着:
各个 Google API 的源代码是使用 Discovery API 以编程方式生成的。
我想做类似的事情,但我不知道把时间和研究重点放在哪里。我查过CodeDOM(和固有限制)、Roslyn 以及the two 之间的some differences。我还查看了T4 Text Templates for Visual Studio。
明确地说,我不希望像使用反射之类的东西那样在运行时生成代码,我希望生成一些库的位 - 尽管我不确定我是否正在寻找active or passive代呢。
【问题讨论】:
-
查看 T4 模板。
标签: c# .net roslyn google-api-dotnet-client codedom