From a628e177a5f8da3f6879c66e471cb3aea46fc198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 18 Mar 2020 20:13:19 +0300 Subject: [PATCH] Add test for TypeHelper and improve ReflectionHelper --- .../Volo/Abp/Reflection/ReflectionHelper.cs | 4 ++-- .../Volo/Abp/Reflection/TypeHelper_Tests.cs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs index b314ca6b84..8d6e6a42cf 100644 --- a/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs +++ b/framework/src/Volo.Abp.Core/Volo/Abp/Reflection/ReflectionHelper.cs @@ -53,14 +53,14 @@ namespace Volo.Abp.Reflection if (givenTypeInfo.IsGenericType && givenType.GetGenericTypeDefinition() == genericType) { - result.Add(givenType); + result.AddIfNotContains(givenType); } foreach (var interfaceType in givenTypeInfo.GetInterfaces()) { if (interfaceType.GetTypeInfo().IsGenericType && interfaceType.GetGenericTypeDefinition() == genericType) { - result.Add(interfaceType); + result.AddIfNotContains(interfaceType); } } diff --git a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs index 59378708b1..e289779d2c 100644 --- a/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs +++ b/framework/test/Volo.Abp.Core.Tests/Volo/Abp/Reflection/TypeHelper_Tests.cs @@ -16,6 +16,27 @@ namespace Volo.Abp.Reflection guidType.ShouldBe(typeof(Guid)); } + [Fact] + public void IsEnumerable() + { + TypeHelper.IsEnumerable( + typeof(IEnumerable), + out var itemType + ).ShouldBeTrue(); + itemType.ShouldBe(typeof(string)); + + TypeHelper.IsEnumerable( + typeof(List), + out itemType + ).ShouldBeTrue(); + itemType.ShouldBe(typeof(TypeHelper_Tests)); + + TypeHelper.IsEnumerable( + typeof(TypeHelper_Tests), + out itemType + ).ShouldBeFalse(); + } + [Fact] public void IsDictionary() {