我有一个这样定义的抽象基类:
public abstract class BaseItem: INotifyPropertyChanged, ICloneable
{
// Various Properties...
public event public event PropertyChangedEventHandler PropertyChanged;
public object Clone()
{
var clone = (BaseItem)MemberwiseClone();
return clone;
}
}
派生类继承并使用基类的 Clone 方法,因此它们不必实现自己的 Clone 方法(加上一些额外的、不相关的原因)。
通常,此代码按预期工作。唯一的问题是有一个不需要的副作用。因为我使用 MemberwiseClone 来克隆实例,所以引用类型是浅拷贝的,不幸的是其中包括事件。因此,任何已订阅原始实例事件的对象也将订阅克隆实例上的事件。这就是问题。
有什么方法可以使用 BaseItem.Clone 方法克隆 BaseItem 派生类的实例,而无需克隆事件?