我有一个名为Doctor的实体类型,我创建了一个模型,以便我可以对实体中的项目使用INotifyPropertyChange
。在我的名为DoctorModel
的模型中,我有以下函数,它会给我一个例外:
无法将“MS.Internal.NamedObject”类型的对象强制转换为DoctorModel
// OVERLOADED METHODS
public override int GetHashCode()
{
return ID ^ 7;
}
public override bool Equals(object obj)
{
// Check for null
if (ReferenceEquals(obj, null))
return false;
// Check for same reference
if (ReferenceEquals(this, obj))
return true;
var model = (DoctorModel)obj; <-- Exception HERE -->
return this.ID == model.ID;
}
编辑: 我正在创建一个这种类型的ObservableCollection,但是当我尝试删除一个元素时,它不会从中删除。我在一个网站上看到一篇文章,该文章表明在搭建我所描述的内容时会使用这种技术。我所指的文章如下:http://www.c-sharpcorner.com/UploadFile/tirthacs/remove-an-item-form-observable-collection-using-remove/
答案 0 :(得分:2)
只需将我的解决方案发布到我的问题中,以防其他人可以从中受益。
public override int GetHashCode()
{
return string.Format("DoctorModel{0}", this.ID.ToString()).GetHashCode();
}
public override bool Equals(object obj)
{
var newObj = obj as DoctorModel;
if (null != newObj)
{
return this.GetHashCode() == newObj.GetHashCode();
}
else
{
return base.Equals(obj);
}
}