private bool CompareReferenceProperty <T>(PropertyInfo p, T a, T b) { if (!typeof(IdentifiableBase).IsAssignableFrom(p.PropertyType)) { return(false); } IdentifiableBase va = (IdentifiableBase)p.GetValue(a, null); IdentifiableBase vb = (IdentifiableBase)p.GetValue(b, null); if (va == null && vb == null) { return(false); } if (!(va.UserIds.Any() && vb.UserIds.Any())) { return(false); } return(va.UserIds.First().Identifier != vb.UserIds.First().Identifier); }
private void UpdateReferenceProperty <T>(PropertyInfo p, T a, T b) { if (!typeof(IdentifiableBase).IsAssignableFrom(p.PropertyType)) { return; } IdentifiableBase vb = (IdentifiableBase)p.GetValue(b, null); if (vb == null) { return; } if (!(vb.UserIds.Any())) { return; } var tmp = repoSet.Where(x => x.UserIds.Count > 0).ToList(); IVersionable found = tmp.FirstOrDefault(x => x.UserIds[0].Identifier == vb.UserIds[0].Identifier); p.SetValue(a, found, null); }