我把兴趣当作工作,因为我把工作当作兴趣。
前幾天做一個小程序時,需要使用Remoting,在服務器端維護一對像的數組,客戶端會通過Remoting使用服務器提供的方法對數組操作,程序原型如下:
對象:
public class Employe
{
private int _ID; private string _Name;
private int _ID;
private string _Name;
public int ID { get{return this._ID;} set{this._ID=value;} } public string Name { get{return this._Name;} set{this._Name=value;} }
public int ID
get{return this._ID;}
set{this._ID=value;}
}
public string Name
get{return this._Name;}
set{this._Name=value;}
服務器端有這一個組數:
List<Employe> Employes;
提供了如下方法:
RemoveEmploye(Employe employe);
具體實現為:
public RemoveEmploye(Employe employe)
Employes.Remove(employe);
程序看起來好像沒問題,可是在執行的時候,怎么也不能移除傳入的employe。
後來一想,客戶端的object怎么可能會和服務器的object相等呢?
在Employe類加上如下代碼即解決問題:
public override int GetHashCode(){ return this.ID.GetHashCode ();}public override bool Equals(object obj){ return this.GetHashCode().Equals( (obj as Employe).GetHashCode());}
原來,客戶端的object傳到服務器是要先經過Serializable再DeSerializable的,必須告訴.net如何比較兩個對象是否相等才行。
posted on 2007-07-11 09:50 zoti 阅读(75) 评论(0) 编辑 收藏 网摘
Powered by: 博客园 Copyright © zoti