Beispiel #1
0
    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];
Beispiel #2
0
 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");
     }
 }
Beispiel #3
0
        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()}>");
            }
        }
Beispiel #4
0
        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)
Beispiel #6
0
 public abstract string GetTypeString(CodeTypeBase code, CodeElement targetElement, bool includeCollectionInformation = true);