Browse Source

Introduce ApiTypeNameHelper

pull/4906/head
Halil İbrahim Kalkan 6 years ago
parent
commit
226d58440b
  1. 4
      framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs
  2. 38
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApiTypeNameHelper.cs
  3. 2
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs
  4. 6
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs
  5. 24
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/PropertyApiDescriptionModel.cs
  6. 4
      framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs

4
framework/src/Volo.Abp.Core/Volo/Abp/Reflection/TypeHelper.cs

@ -295,6 +295,10 @@ namespace Volo.Abp.Reflection
{
return "number";
}
else if (type == typeof(object))
{
return "object";
}
return type.FullName ?? type.Name;
}

38
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ApiTypeNameHelper.cs

@ -0,0 +1,38 @@
using System;
using Volo.Abp.Reflection;
namespace Volo.Abp.Http.Modeling
{
public static class ApiTypeNameHelper
{
public static string GetTypeName(Type type)
{
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
{
return $"{{{GetTypeName(keyType)}:{GetTypeName(valueType)}}}";
}
if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
{
return $"[{GetTypeName(itemType)}]";
}
return TypeHelper.GetFullNameHandlingNullableAndGenerics(type);
}
public static string GetSimpleTypeName(Type type)
{
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
{
return $"{{{GetSimpleTypeName(keyType)}:{GetSimpleTypeName(valueType)}}}";
}
if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
{
return $"[{GetSimpleTypeName(itemType)}]";
}
return TypeHelper.GetSimplifiedName(type);
}
}
}

2
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/MethodParameterApiDescriptionModel.cs

@ -31,7 +31,7 @@ namespace Volo.Abp.Http.Modeling
Name = parameterInfo.Name,
TypeAsString = parameterInfo.ParameterType.GetFullNameWithAssemblyName(),
Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(parameterInfo.ParameterType),
TypeSimple = TypeHelper.GetSimplifiedName(parameterInfo.ParameterType),
TypeSimple = ApiTypeNameHelper.GetSimpleTypeName(parameterInfo.ParameterType),
IsOptional = parameterInfo.IsOptional,
DefaultValue = parameterInfo.HasDefaultValue ? parameterInfo.DefaultValue : null
};

6
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ParameterApiDescriptionModel.cs

@ -26,7 +26,7 @@ namespace Volo.Abp.Http.Modeling
private ParameterApiDescriptionModel()
{
}
public static ParameterApiDescriptionModel Create(string name, string nameOnMethod, Type type, bool isOptional = false, object defaultValue = null, string[] constraintTypes = null, string bindingSourceId = null, string descriptorName = null)
@ -36,7 +36,7 @@ namespace Volo.Abp.Http.Modeling
Name = name,
NameOnMethod = nameOnMethod,
Type = type != null ? TypeHelper.GetFullNameHandlingNullableAndGenerics(type) : null,
TypeSimple = type != null ? TypeHelper.GetSimplifiedName(type) : null,
TypeSimple = type != null ? ApiTypeNameHelper.GetSimpleTypeName(type) : null,
IsOptional = isOptional,
DefaultValue = defaultValue,
ConstraintTypes = constraintTypes,
@ -45,4 +45,4 @@ namespace Volo.Abp.Http.Modeling
};
}
}
}
}

24
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/PropertyApiDescriptionModel.cs

@ -1,6 +1,5 @@
using System;
using System.Reflection;
using Volo.Abp.Reflection;
namespace Volo.Abp.Http.Modeling
{
@ -16,30 +15,11 @@ namespace Volo.Abp.Http.Modeling
//TODO: Validation rules for this property
public static PropertyApiDescriptionModel Create(PropertyInfo propertyInfo)
{
string typeName;
string simpleTypeName;
if (TypeHelper.IsDictionary(propertyInfo.PropertyType, out var keyType, out var valueType))
{
typeName = $"{{{TypeHelper.GetFullNameHandlingNullableAndGenerics(keyType)}:{TypeHelper.GetFullNameHandlingNullableAndGenerics(valueType)}}}";
simpleTypeName = $"{{{TypeHelper.GetSimplifiedName(keyType)}:{TypeHelper.GetSimplifiedName(valueType)}}}";
}
else if (TypeHelper.IsEnumerable(propertyInfo.PropertyType, out var itemType, includePrimitives: false))
{
typeName = $"[{TypeHelper.GetFullNameHandlingNullableAndGenerics(itemType)}]";
simpleTypeName = $"[{TypeHelper.GetSimplifiedName(itemType)}]";
}
else
{
typeName = TypeHelper.GetFullNameHandlingNullableAndGenerics(propertyInfo.PropertyType);
simpleTypeName = TypeHelper.GetSimplifiedName(propertyInfo.PropertyType);
}
return new PropertyApiDescriptionModel
{
Name = propertyInfo.Name,
Type = typeName,
TypeSimple = simpleTypeName
Type = ApiTypeNameHelper.GetTypeName(propertyInfo.PropertyType),
TypeSimple = ApiTypeNameHelper.GetSimpleTypeName(propertyInfo.PropertyType)
};
}
}

4
framework/src/Volo.Abp.Http/Volo/Abp/Http/Modeling/ReturnValueApiDescriptionModel.cs

@ -23,8 +23,8 @@ namespace Volo.Abp.Http.Modeling
return new ReturnValueApiDescriptionModel
{
Type = TypeHelper.GetFullNameHandlingNullableAndGenerics(unwrappedType),
TypeSimple = TypeHelper.GetSimplifiedName(unwrappedType)
TypeSimple = ApiTypeNameHelper.GetSimpleTypeName(unwrappedType)
};
}
}
}
}

Loading…
Cancel
Save