可以生成客户端代码,以便模型的类名具有完整的名称空间作为前缀?
那应该避免相同的类名冲突。
例
com.foo.MyClass
和
it.foo.MyClass
到现在我得到的是MyClass
和MyClass2
这与其说是有意义的。
应该是最好有,在名称冲突的情况下,ComFooMyClass
和ItFooMyClass
。
我找到了一个使用自定义SchemaNameGenerator而不是自定义TypeNameGenerator(我没有程序包信息)的解决方案。
internal class MySchemaNameGenerator : DefaultSchemaNameGenerator, ISchemaNameGenerator
{
public override string Generate(Type type)
{
string retValue = base.Generate(type);
// Quite ugly but do fix the concept
if (retValue.Equals("BaseClass"))
{
retValue = type.FullName.Replace(".","_");
}
return retValue;
}
}
始终通过设置进行设置:
app.UseSwaggerUi(typeof(WebApiApplication).Assembly, new SwaggerUiSettings
{
SchemaNameGenerator = new MySchemaNameGenerator(),
...
这样我得到一些更有意义的东西
"/api/test/models/base": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get2",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/WebApi_Models_BaseClass"
},
"x-nullable": true
}
}
}
},
"/api/test/models/extended": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get3",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/ExtendedClass"
},
"x-nullable": true
}
}
}
},
"/api/test/modelli/base": {
"get": {
"tags": [
"Test"
],
"operationId": "Test_Get4",
"parameters": [],
"responses": {
"200": {
"description": "",
"schema": {
"$ref": "#/definitions/WebApi_Modelli_BaseClass"
},
"x-nullable": true
}
}
}
},
即使多态性的discriminator属性想要基名称“ BaseClass”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句