Add support list of dictionary in SDK (#1230)

This commit is contained in:
Xiaogang 2023-09-07 08:38:22 +08:00 коммит произвёл GitHub
Родитель 9c79a57828
Коммит 248d7dd3d1
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 20 добавлений и 2 удалений

Просмотреть файл

@ -2110,7 +2110,7 @@ export class CmdletClass extends Class {
if (operation.details.default.externalDocs) {
this.add(new Attribute(ExternalDocsAttribute, {
parameters: [`${new StringExpression(this.operation.details.default.externalDocs?.url ?? '')}`,
`${new StringExpression(this.operation.details.default.externalDocs?.description ?? '')}`]
`${new StringExpression(this.operation.details.default.externalDocs?.description ?? '')}`]
}));
}

Просмотреть файл

@ -64,6 +64,8 @@ function csharpForArray(elementType: Schema, helper: Helper, nullable = true): s
if (elementType.type === SchemaType.Array) {
// recursively generate the csharpForArray
return `System.Collections.Generic.IList<${csharpForArray((<ArraySchema>elementType).elementType, helper)}>`;
} else if (elementType.type === SchemaType.Dictionary) {
return `System.Collections.Generic.IList<${csharpForDict(<DictionarySchema>elementType, helper)}>`;
}
const rawElementType = elementType;
elementType = rawElementType;
@ -75,6 +77,22 @@ function csharpForArray(elementType: Schema, helper: Helper, nullable = true): s
return `System.Collections.Generic.IList<${type ? type + postfix :
(helper.IsEnum(rawElementType) && nullable ? rawElementType.language.default.name + '?' : rawElementType.language.default.name)}>`;
}
function csharpForDict(dictSchema: DictionarySchema, helper: Helper): string {
const rawElementType = dictSchema.elementType;
let elementType = rawElementType;
if ((rawElementType.type === SchemaType.Choice || rawElementType.type === SchemaType.SealedChoice) && !helper.IsEnum(rawElementType)) {
elementType = (<ChoiceSchema | SealedChoiceSchema>rawElementType).choiceType;
}
let valueType = helper.GetCsharpType(elementType) ? helper.GetCsharpType(elementType) : (rawElementType.type === SchemaType.Array ? csharpForArray((<ArraySchema>rawElementType).elementType, helper) : rawElementType.language.default.name);
if (rawElementType.type === 'any') {
valueType = 'object';
}
if (((helper.GetCsharpType(elementType) && valueType !== 'string') || helper.IsEnum(rawElementType)) && dictSchema.nullableItems != false) {
valueType += '?';
}
return `System.Collections.Generic.IDictionary<string, ${valueType}>`;
}
function setSchemaNames(schemaGroups: Dictionary<Array<Schema>>, azure: boolean, serviceNamespace: string, helper: Helper) {
const baseNamespace = new Set<string>();
@ -221,7 +239,7 @@ function setSchemaNames(schemaGroups: Dictionary<Array<Schema>>, azure: boolean,
apiversion: thisApiversion,
apiname: apiName,
name: schemaName,
fullname: `System.Collections.Generic.IDictionary<string, ${valueType}>`,
fullname: csharpForDict(<DictionarySchema>schema, helper),
};
}
}