freetubesync/FreeTubeSync/Database/MapData.cs
Mario Steele e670ad5701 Updated MapData
Had data going in the wrong direction, corrected this.
2025-07-24 04:21:10 -05:00

40 lines
No EOL
1.1 KiB
C#

using System.Collections;
namespace FreeTubeSync.Database;
public static class MapData
{
public static void MapFrom(this object obj2, object obj1)
{
var props = new Dictionary<string, object?>();
var t1Type = obj1.GetType();
var t2Type = obj2.GetType();
var properties = t1Type.GetProperties();
foreach (var property in properties)
{
props[property.Name] = property.GetValue(obj1);
}
properties = t2Type.GetProperties();
foreach (var property in properties)
{
if (props.ContainsKey(property.Name))
{
var value = props[property.Name];
if (value is string || value is not IEnumerable)
property.SetValue(obj2, value);
}
}
}
public static void MapTo<T1, T2>(this IEnumerable<T1> obj1, IList<T2> obj2)
where T1 : class where T2 : class, new()
{
foreach (var obj in obj1)
{
var newObj = new T2();
newObj.MapFrom(obj);
obj2.Add(newObj);
}
}
}