public string GetImportedStaticMethodName(CodeTypeBase code, CodeElement targetElement, string methodPrefix = "New", string methodSuffix = "", string trimEnd = "") { var typeString = GetTypeString(code, targetElement, false, false)?.Split(dot); var importSymbol = typeString == null || typeString.Length < 2 ? string.Empty : typeString.First() + dot; var methodName = typeString.Last().ToFirstCharacterUpperCase(); if (!string.IsNullOrEmpty(trimEnd) && methodName.EndsWith(trimEnd, StringComparison.OrdinalIgnoreCase)) { methodName = methodName[0..^ trimEnd.Length];
public string TranslateType(CodeTypeBase type) { if (type is CodeType currentType) { return(TranslateType(currentType)); } else if (type is CodeComposedTypeBase currentUnionType) { return(TranslateType(currentUnionType.AllTypes.First())); } else { throw new InvalidOperationException("Unknown type"); } }
private string GetSerializationMethodName(CodeTypeBase propType) { var isCollection = propType.CollectionKind != CodeTypeBase.CodeTypeCollectionKind.None; var propertyType = conventions.TranslateType(propType.Name); var nullableSuffix = conventions.ShouldTypeHaveNullableMarker(propType, propertyType) ? CSharpConventionService.NullableMarker : string.Empty; if (propType is CodeType currentType) { if (isCollection) { if (currentType.TypeDefinition == null) { return($"WriteCollectionOfPrimitiveValues<{propertyType}{nullableSuffix}>"); } else { return($"WriteCollectionOfObjectValues<{propertyType}{nullableSuffix}>"); } } else if (currentType.TypeDefinition is CodeEnum enumType) { return($"WriteEnumValue<{enumType.Name.ToFirstCharacterUpperCase()}>"); } } switch (propertyType) { case "string": case "bool": case "int": case "float": case "double": case "Guid": case "DateTimeOffset": return($"Write{propertyType.ToFirstCharacterUpperCase()}Value"); default: return($"WriteObjectValue<{propertyType.ToFirstCharacterUpperCase()}>"); } }
private string GetDeserializationMethodName(CodeTypeBase propType) { var isCollection = propType.CollectionKind != CodeTypeBase.CodeTypeCollectionKind.None; var propertyType = conventions.TranslateType(propType.Name); if (propType is CodeType currentType) { if (isCollection) { if (currentType.TypeDefinition == null) { return($"GetCollectionOfPrimitiveValues<{propertyType}>().ToList"); } else { return($"GetCollectionOfObjectValues<{propertyType}>().ToList"); } } else if (currentType.TypeDefinition is CodeEnum enumType) { return($"GetEnumValue<{enumType.Name.ToFirstCharacterUpperCase()}>"); } } switch (propertyType) { case "string": case "bool": case "int": case "float": case "double": case "Guid": case "DateTimeOffset": return($"Get{propertyType.ToFirstCharacterUpperCase()}Value"); default: return($"GetObjectValue<{propertyType.ToFirstCharacterUpperCase()}>"); } }
internal void AddParametersAssignment(LanguageWriter writer, CodeTypeBase pathParametersType, string pathParametersReference, params (CodeTypeBase, string, string)[] parameters)
public abstract string GetTypeString(CodeTypeBase code, CodeElement targetElement, bool includeCollectionInformation = true);