我目前使用的是什么
public static void MapObjectPropertyValues(object e1, object e2)
{
foreach (var p in e1.GetType().GetProperties())
{
if (e2.GetType().GetProperty(p.Name) != null)
{
p.SetValue(e1, e2.GetType().GetProperty(p.Name).GetValue(e2, null), null);
}
}
}
我想传递第三个参数,即我想要从映射中排除的类型的通用列表。例如字符串和布尔值。并检查p
是否属于列表中的类型。感谢任何帮助,谢谢!
答案 0 :(得分:1)
如果类型完全匹配,您可以使用p.PropertyType
属性排除分配。
public static void MapObjectPropertyValues(object e1,
object e2,
IEnumerable<Type> excludedTypes)
{
foreach (var p in e1.GetType().GetProperties())
{
if (e2.GetType().GetProperty(p.Name) != null &&
// next line added
!(excludedTypes.Contains(p.PropertyType)))
{
p.SetValue(e1, e2.GetType().GetProperty(p.Name).GetValue(e2, null), null);
}
}
}