我使用swagger-codegen
生成我的客户端C#类。它完成了这项工作,但有一些我想定制的东西:
1)最重要的是,我如何告诉它使用哪个命名空间或基本命名空间?现在所有的genned类都有IO.Swagger.Model
命名空间,我该怎么改变呢?
2)我生成的所有模型都以I开头......就像在ICustomer中一样...有没有办法自动条带,如果类名以2个大写字母开头,第一个字母是I?
3)如果可以做2,有没有办法让它附加一个:IWhatever
?因此,如果它试图生成ICustomer
,我希望看到:
public class Customer : ICustomer
可以这样做吗?
4)对于我的上一个问题,我正在使用这个命令行:
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
问题是它将此添加到路径: SRC \主\ CSHARP \ IO \扬鞭
我有没有办法将这个添加到路径中?
5)最后,最不重要的是,它有4个文件夹:Api
,Client
,Model
和Properties
。有没有办法只生成Client
和Model
文件夹?
答案 0 :(得分:9)
基于获得swagger-codegen
团队的回复并自行尝试:
1)为了修复名称空间,我必须创建一个基本上具有以下内容的config.json
文件:
{
"packageName": "My.Namespace.Whatever"
}
现在我的运行命令是
java -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c config.json
2)无法替换,但我可以预先添加...所以我没有使用名为ICustomer
的类,而是认为ApiICustomer
更有意义......所以对于上面的命令,我加入
--model-name-prefix Api
3)仍然不确定这是否可行。
4)看起来管道中的新变化将会改变其工作方式。 https://github.com/swagger-api/swagger-codegen/issues/2837
5)根据此处的信息:https://github.com/swagger-api/swagger-codegen#selective-generation您可以通过添加java
系统属性来完成此操作,例如此java -Dwhateverproperty
。所以最终结果,不包括对#3的任何修复:
java -Dmodels -DsupportingFiles -jar swagger-codegen-cli.jar generate
-i http://localhost:57772/MyService/swagger/v1/swagger.json
-l csharp -o C:/Code/AutoGenned/MyService
-c C:/Code/SwaggerCodeGen/config.json
--model-name-prefix Api
答案 1 :(得分:5)
对于第1点),除了使用配置文件(-c config.json
),
您也可以直接使用该选项:-DpackageName=My.Namespace.Whatever