10

swagger-codegen用来生成我的客户端 C# 类。它可以完成工作,但是我想定制一些东西:

1)最重要的是,我如何告诉它使用哪个命名空间,或者可能是基本命名空间?现在所有生成的类都有IO.Swagger.Model命名空间,我该如何改变它?

2)我所有生成的模型都以 I 开头......就像在 ICustomer 中一样......如果类名以 2 个大写字母开头并且第一个字母是 I,有没有办法自动删除第一个 I?

3)如果 2 可以完成,有没有办法让它附加一个 : IWhatever?所以如果它试图 gen 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\main\csharp\IO\Swagger

有没有办法让我不把它添加到路径中?

5) 最后,也是最不重要的,它生成 4 个文件夹:ApiClientModelProperties. 有没有办法只生成ClientModel文件夹?

4

2 回答 2

16

基于获得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
于 2016-05-12T17:41:01.793 回答
13

对于第 1) 点,除了使用配置文件 ( -c config.json),

您也可以直接使用该选项:-DpackageName=My.Namespace.Whatever

于 2017-05-26T02:59:16.867 回答