CopyPublicValueTypeProperties fixes
This commit is contained in:
parent
7609e94f18
commit
e865a0535a
|
|
@ -5,16 +5,17 @@ namespace AyCode.Core.Extensions;
|
||||||
|
|
||||||
public static class PropertyHelper
|
public static class PropertyHelper
|
||||||
{
|
{
|
||||||
public static TDestination CopyPublicProperties<TSource, TDestination>(TSource src, TDestination dest)
|
public static TDestination CopyPublicValueTypeProperties<TSource, TDestination>(TSource src, TDestination dest)
|
||||||
{
|
{
|
||||||
if (src == null || dest == null) return dest;
|
if (src == null || dest == null) return dest;
|
||||||
|
|
||||||
var srcProps = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => p.CanRead);
|
var srcProps = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(p => p.CanRead && !typeof(IEnumerable).IsAssignableFrom(p.PropertyType));
|
||||||
|
|
||||||
foreach (var sp in srcProps)
|
foreach (var sp in srcProps)
|
||||||
{
|
{
|
||||||
var dp = typeof(TDestination).GetProperty(sp.Name, BindingFlags.Public | BindingFlags.Instance);
|
var dp = typeof(TDestination).GetProperty(sp.Name, BindingFlags.Public | BindingFlags.Instance);
|
||||||
if (dp == null || !dp.CanWrite || dp is IEnumerable) continue;
|
if (dp == null || !dp.CanWrite || typeof(IEnumerable).IsAssignableFrom(dp.PropertyType)) //dp.PropertyType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
|
||||||
|
continue;
|
||||||
|
|
||||||
dp.SetValue(dest, sp.GetValue(src));
|
dp.SetValue(dest, sp.GetValue(src));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue