我有一個爲所有DataAccess使用WCF的應用程序。它返回一些業務對象,它有一些操作。我應該在哪裏將Comparers放入使用WCF的應用程序中?
此代碼是否應存在於我的客戶端或我的服務中?如果在服務中,我應該如何實現它?我可以簡單地將它添加爲我的業務對象的接口嗎?這是通過WCF服務代理代碼實現的嗎?
(這是從MSDN的樣本,我想在我實現我自己能得到一些反饋,但是這將是99%相同)
// Custom comparer for the Product class.
class ProductComparer : IEqualityComparer<Product>
{
// Products are equal if their names and product numbers are equal.
public bool Equals(Product x, Product y)
{
// Check whether the compared objects reference the same data.
if (Object.ReferenceEquals(x, y)) return true;
// Check whether any of the compared objects is null.
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
// Check whether the products' properties are equal.
return x.Code == y.Code && x.Name == y.Name;
}
// If Equals() returns true for a pair of objects,
// GetHashCode must return the same value for these objects.
public int GetHashCode(Product product)
{
// Check whether the object is null.
if (Object.ReferenceEquals(product, null)) return 0;
// Get the hash code for the Name field if it is not null.
int hashProductName = product.Name == null ? 0 : product.Name.GetHashCode();
// Get the hash code for the Code field.
int hashProductCode = product.Code.GetHashCode();
// Calculate the hash code for the product.
return hashProductName^hashProductCode;
}
}
優秀 - 說得好! – 2009-10-07 19:31:38
多數民衆贊成我以爲 - 所以我需要做一個方法,暴露這個比較從我的WCF服務公開? – Nate 2009-10-07 19:58:41
我的目標是能夠在客戶端做到這一點,做我自己的比較:productsA.Except(productsB)(其中兩個都是IEnumerable)。 – Nate 2009-10-07 20:00:13