gpt4 book ai didi

c# - C# 中查找两个对象之间的差异

转载 作者:行者123 更新时间:2023-12-02 21:18:13 24 4
gpt4 key购买 nike

我正在寻找一种方法来查找同一类型的两个对象之间的属性值之间的差异。

我一直在研究这个堆栈溢出问题中的示例:

Finding property differences between two C# objects

这是我到目前为止所拥有的:

public static string Compaire<T>(T initial, T final)
{
Type currentType = initial.GetType();
PropertyInfo[] props = currentType.GetProperties();
StringBuilder sb = new StringBuilder();

foreach (var prop in props)
{

Type equatable = prop.PropertyType.GetInterface("System.IEquatable");

if (equatable != null)
{
var i = prop.GetValue(initial);
var f = prop.GetValue(final);

if (i!= null && f != null && !i.Equals(f))
{
sb.Append(String.Format(_"{0}.{1} has changed from {2} to {3}. ", currentType.BaseType.Name, prop.Name, i, f));
}
}

}
return sb.ToString();
}

这适用于大多数情况,但是,可为 null 的属性(例如 Nullable int)不会进行比较,因为(我认为)它们没有被拆箱,并且 nullable 不是通过 IEquatable 实现的。

使用这种反射方法,是否可以比较可空值,同时仍然避免已处置的实体(例如“ObjectContext 实例已被处置,不能再用于需要连接的操作”)?

最佳答案

也许这个项目可以满足您的需求: CompareNetObjects

关于c# - C# 中查找两个对象之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29220302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com