Tôi muốn biết cách hiệu quả nhất để so sánh hai thực thể cùng loại.Cách tốt nhất để so sánh hai thực thể khung thực thể là gì?
Một thực thể được tạo từ tệp xml bằng tay (ví dụ: cá thể mới và thuộc tính được đặt theo cách thủ công) và đối tượng kia được khôi phục từ ngữ cảnh đối tượng của tôi.
Tôi muốn biết liệu giá trị thuộc tính có giống nhau trong mỗi trường hợp hay không.
Suy nghĩ đầu tiên của tôi là tạo ra giá trị băm của các giá trị thuộc tính từ mỗi đối tượng và so sánh các băm, nhưng có thể có cách khác hoặc được xây dựng theo cách?
Mọi đề xuất đều được hoan nghênh.
Rất cám ơn,
James
CẬP NHẬT
tôi đến với điều này:
static class ObjectComparator<T>
{
static bool CompareProperties(T newObject, T oldObject)
{
if (newObject.GetType().GetProperties().Length != oldObject.GetType().GetProperties().Length)
{
return false;
}
else
{
var oldProperties = oldObject.GetType().GetProperties();
foreach (PropertyInfo newProperty in newObject.GetType().GetProperties())
{
try
{
PropertyInfo oldProperty = oldProperties.Single<PropertyInfo>(pi => pi.Name == newProperty.Name);
if (newProperty.GetValue(newObject, null) != oldProperty.GetValue(oldObject, null))
{
return false;
}
}
catch
{
return false;
}
}
return true;
}
}
}
tôi đã không kiểm tra được chưa, nó là nhiều hơn một loại thực phẩm cho các tư tưởng để tạo thêm một số ý tưởng từ nhóm.
Một điều có thể là vấn đề khi so sánh các thuộc tính có giá trị thực thể, nếu so sánh mặc định so sánh trên tham chiếu đối tượng thì nó sẽ không bao giờ đúng. Một sửa chữa có thể là để quá tải toán tử bình đẳng trên các thực thể của tôi để nó so sánh trên ID thực thể.
Vì vậy, về cơ bản chỉ sử dụng một chuỗi các câu lệnh if để kiểm tra sự bình đẳng trên mỗi thuộc tính và sử dụng sự tiện lợi của phương pháp ghi đè. – James
Vâng, tôi nghĩ vậy. Nếu tôi đã đi quá đơn giản cho những gì bạn đang sau, tại sao không đăng một số mã hơn :) –
Ok, cảm ơn, khi tôi có một cái gì đó thực hiện bệnh bài giải pháp của tôi – James