This commit is contained in:
2022-02-25 07:10:09 +03:00
parent bff4cb735c
commit 87128879a5
11 changed files with 519 additions and 11 deletions

View File

@@ -18,7 +18,7 @@ public static class SimpleMapper
/// <param name="mode">Тип сопоставления</param>
/// <param name="list">Список параметров для сопоставления</param>
/// <typeparam name="TF">Класс-родитель</typeparam>
/// <typeparam name="T">Класс-приёмник</typeparam>
/// <typeparam name="T">Класс-приемник</typeparam>
public static void MapEx<TF, T> (TF from, ref T to, MapMode mode, List<string> list)
{
//Копирую поля
@@ -27,7 +27,7 @@ public static class SimpleMapper
foreach (FieldInfo fieldOfA in typeOfA.GetFields())
{
//Проверяем выполнение условия и прерываем, если не выполняется
if (CheckCondition(fieldOfA.Name, fieldOfA.GetValue(from), mode, list))
if (!CheckCondition<TF>(fieldOfA.Name, fieldOfA.GetValue(from), mode, list))
continue;
//Получаем FieldInfo для b по имени поля a
@@ -41,7 +41,7 @@ public static class SimpleMapper
foreach (PropertyInfo propertyOfA in typeOfA.GetProperties())
{
//Проверяем выполнение условия и прерываем, если не выполняется
if (CheckCondition(propertyOfA.Name, propertyOfA.GetValue(from), mode, list))
if (!CheckCondition<TF>(propertyOfA.Name, propertyOfA.GetValue(from), mode, list))
continue;
//Получаем PropertyInfo для b по имени свойства a
@@ -56,7 +56,7 @@ public static class SimpleMapper
/// </summary>
/// <param name="from">Параметр класса F</param>
/// <typeparam name="TF">Класс-родитель</typeparam>
/// <typeparam name="T">Класс-приёмник</typeparam>
/// <typeparam name="T">Класс-приемник</typeparam>
/// <returns>Элемент класса T</returns>
public static T Map<TF, T> (TF from)
{
@@ -77,7 +77,7 @@ public static class SimpleMapper
/// <param name="mode">Режим проверки</param>
/// <param name="list">Список игнорирования/добавления</param>
/// <returns></returns>
private static bool CheckCondition (string itemName, object? itemValue, MapMode mode, ICollection<string> list)
private static bool CheckCondition<T> (string itemName, object? itemValue, MapMode mode, ICollection<string> list)
{
//Если режим "Только список" и поля нет в списке,
//либо режим "Только не в списке" и поле есть в списке
@@ -91,7 +91,7 @@ public static class SimpleMapper
MapMode.MapByList => list.Contains(itemName),
MapMode.MapIgnoreList => !list.Contains(itemName),
MapMode.MapNotDefault => itemValue != default,
MapMode.MapNotNullOrDefault => itemValue != null || itemValue != default,
MapMode.MapNotNullOrDefault => !Equals(itemValue, default(T)),
_ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null)
};

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Version>1.2022.223</Version>
<Version>1.2022.225</Version>
<Authors>Alexander Babaev</Authors>
<Product>ANB Software Components Pack</Product>
<Description>Library of some useful functions in C# language.</Description>
@@ -15,8 +15,8 @@
<SignAssembly>False</SignAssembly>
<PackageProjectUrl>https://github.com/GoodBoyAlex/anbsoftware_componentspack</PackageProjectUrl>
<RepositoryUrl>https://github.com/GoodBoyAlex/anbsoftware_componentspack</RepositoryUrl>
<AssemblyVersion>1.2022.0223</AssemblyVersion>
<FileVersion>1.2022.223</FileVersion>
<AssemblyVersion>1.2022.0225</AssemblyVersion>
<FileVersion>1.2022.225</FileVersion>
<PackageId>ANBSoftware.ComponentsPack</PackageId>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<AnalysisLevel>6.0</AnalysisLevel>