|
|
|
@ -1,4 +1,5 @@
|
|
|
|
using System;
|
|
|
|
using System;
|
|
|
|
|
|
|
|
using Volo.Abp.Collections;
|
|
|
|
using Volo.Abp.Reflection;
|
|
|
|
using Volo.Abp.Reflection;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.Http.Modeling
|
|
|
|
namespace Volo.Abp.Http.Modeling
|
|
|
|
@ -7,14 +8,26 @@ namespace Volo.Abp.Http.Modeling
|
|
|
|
{
|
|
|
|
{
|
|
|
|
public static string GetTypeName(Type type)
|
|
|
|
public static string GetTypeName(Type type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
return GetTypeName(type, new TypeList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static string GetTypeName(Type type, ITypeList duplicateTypes)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
duplicateTypes.Add(type);
|
|
|
|
|
|
|
|
|
|
|
|
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
|
|
|
|
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return $"{{{GetTypeName(keyType)}:{GetTypeName(valueType)}}}";
|
|
|
|
if (!duplicateTypes.Contains(keyType) && !duplicateTypes.Contains(valueType))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return $"{{{GetTypeName(keyType, duplicateTypes)}:{GetTypeName(valueType, duplicateTypes)}}}";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
|
|
|
|
if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return $"[{GetTypeName(itemType)}]";
|
|
|
|
if (!duplicateTypes.Contains(itemType))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return $"[{GetTypeName(itemType, duplicateTypes)}]";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TypeHelper.GetFullNameHandlingNullableAndGenerics(type);
|
|
|
|
return TypeHelper.GetFullNameHandlingNullableAndGenerics(type);
|
|
|
|
@ -22,14 +35,26 @@ namespace Volo.Abp.Http.Modeling
|
|
|
|
|
|
|
|
|
|
|
|
public static string GetSimpleTypeName(Type type)
|
|
|
|
public static string GetSimpleTypeName(Type type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
return GetSimpleTypeName(type, new TypeList());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static string GetSimpleTypeName(Type type, ITypeList duplicateTypes)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
duplicateTypes.Add(type);
|
|
|
|
|
|
|
|
|
|
|
|
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
|
|
|
|
if (TypeHelper.IsDictionary(type, out var keyType, out var valueType))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return $"{{{GetSimpleTypeName(keyType)}:{GetSimpleTypeName(valueType)}}}";
|
|
|
|
if (!duplicateTypes.Contains(keyType) && !duplicateTypes.Contains(valueType))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return $"{{{GetSimpleTypeName(keyType, duplicateTypes)}:{GetSimpleTypeName(valueType, duplicateTypes)}}}";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
|
|
|
|
if (TypeHelper.IsEnumerable(type, out var itemType, includePrimitives: false))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return $"[{GetSimpleTypeName(itemType)}]";
|
|
|
|
if (!duplicateTypes.Contains(itemType))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return $"[{GetSimpleTypeName(itemType, duplicateTypes)}]";
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return TypeHelper.GetSimplifiedName(type);
|
|
|
|
return TypeHelper.GetSimplifiedName(type);
|
|
|
|
|