Je les classes suivantes:Comment faire pour diff Valeurs de propriété de deux objets en utilisant GetType GetValue?
public class Person
{
public String FirstName { set; get; }
public String LastName { set; get; }
public Role Role { set; get; }
}
public class Role
{
public String Description { set; get; }
public Double Salary { set; get; }
public Boolean HasBonus { set; get; }
}
Je veux être en mesure d'extraire automatiquement la valeur de la propriété diférences entre Person1 et Person2, par exemple comme ci-dessous:
public static List<String> DiffObjectsProperties(T a, T b)
{
List<String> differences = new List<String>();
foreach (var p in a.GetType().GetProperties())
{
var v1 = p.GetValue(a, null);
var v2 = b.GetType().GetProperty(p.Name).GetValue(b, null);
/* What happens if property type is a class e.g. Role???
* How do we extract property values of Role?
* Need to come up a better way than using .Namespace != "System"
*/
if (!v1.GetType()
.Namespace
.Equals("System", StringComparison.OrdinalIgnoreCase))
continue;
//add values to differences List
}
return differences;
}
Comment puis-je extraire des valeurs de propriété de Rôle dans la personne ???
Ça semble fonctionner, merci! – Jeff
Puisque vous passez dans les objets au lieu du type générique T, vous devez faire ceci je pense: si (a.GetType()! = B.GetType()) renvoyer des différences; – Jeff