chore(dotnet): support for optional properties in generated objects (#5889)
This commit is contained in:
parent
1f1c8b74cd
commit
fbb4626442
|
|
@ -34,6 +34,8 @@ const additionalTypes = new Map(); // this will hold types that we discover, bec
|
||||||
const documentedResults = new Map(); // will hold documentation for new types
|
const documentedResults = new Map(); // will hold documentation for new types
|
||||||
/** @type {Map<string, string[]>} */
|
/** @type {Map<string, string[]>} */
|
||||||
const enumTypes = new Map();
|
const enumTypes = new Map();
|
||||||
|
/** @type {string[]} */
|
||||||
|
const nullableTypes = ['int', 'bool', 'decimal', 'float'];
|
||||||
|
|
||||||
let documentation;
|
let documentation;
|
||||||
/** @type {Map<string, string>} */
|
/** @type {Map<string, string>} */
|
||||||
|
|
@ -265,6 +267,7 @@ function renderMember(member, parent, out) {
|
||||||
if (member.kind === 'method') {
|
if (member.kind === 'method') {
|
||||||
renderMethod(member, parent, output, name);
|
renderMethod(member, parent, output, name);
|
||||||
} else {
|
} else {
|
||||||
|
/** @type string */
|
||||||
let type = translateType(member.type, parent, t => generateNameDefault(member, name, t, parent));
|
let type = translateType(member.type, parent, t => generateNameDefault(member, name, t, parent));
|
||||||
if (member.kind === 'event') {
|
if (member.kind === 'event') {
|
||||||
if (!member.type)
|
if (!member.type)
|
||||||
|
|
@ -286,6 +289,9 @@ function renderMember(member, parent, out) {
|
||||||
console.warn(`children property found in ${parent.name}, assuming array.`);
|
console.warn(`children property found in ${parent.name}, assuming array.`);
|
||||||
type = `IEnumerable<${parent.name}>`;
|
type = `IEnumerable<${parent.name}>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!type.endsWith('?') && !member.required && nullableTypes.includes(type))
|
||||||
|
type = `${type}?`;
|
||||||
output(`public ${type} ${name} { get; set; }`);
|
output(`public ${type} ${name} { get; set; }`);
|
||||||
} else {
|
} else {
|
||||||
throw new Error(`Problem rendering a member: ${type} - ${name} (${member.kind})`);
|
throw new Error(`Problem rendering a member: ${type} - ${name} (${member.kind})`);
|
||||||
|
|
@ -453,7 +459,7 @@ function renderMethod(member, parent, output, name) {
|
||||||
*/
|
*/
|
||||||
const pushArg = (innerArgType, innerArgName, argument) => {
|
const pushArg = (innerArgType, innerArgName, argument) => {
|
||||||
let isEnum = enumTypes.has(innerArgType);
|
let isEnum = enumTypes.has(innerArgType);
|
||||||
let isNullable = ['int', 'bool', 'decimal', 'float'].includes(innerArgType);
|
let isNullable = nullableTypes.includes(innerArgType);
|
||||||
const requiredPrefix = argument.required ? "" : isNullable ? "?" : "";
|
const requiredPrefix = argument.required ? "" : isNullable ? "?" : "";
|
||||||
const requiredSuffix = argument.required ? "" : " = default";
|
const requiredSuffix = argument.required ? "" : " = default";
|
||||||
args.push(`${innerArgType}${requiredPrefix} ${innerArgName}${requiredSuffix}`);
|
args.push(`${innerArgType}${requiredPrefix} ${innerArgName}${requiredSuffix}`);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue