如何隱式地將委託轉換爲其他?我如何隱式委託轉換?
// old
public delegate OldClickEventHandler(object sender, OldClickEventArgs e);
class OldClickEventArgs
{
public int intEnumValue;
OldClickEventArgs(int enumValue){ this.intEnumValue = enumValue; }
}
// new
public delegate NewClickEventHandler(object sender, NewClickEventArgs e);
class NewClickEventArgs
{
public MyEnum EnumValue;
NewClickEventArgs(MyEnum enumValue){ this.EnumValue = enumValue; }
public static implicit operator NewClickEventArgs(OldClickEventArgs e) {
return new NewClickEventArgs((MyEnum)e.intEnumValue);
}
}
// class NewButton : OldButton
// here I need to implicitly convert EventHandlers. HOW?
//
public event NewClickEventHandler Click
{
add {
oldObject.Click += value; // cannot convert New.. to Old..
}
remove {
oldObject.Click -= value; // cannot convert New.. to Old..
}
}
我從'OldEventArgs'繼承'NewEventArgs'。但是,編譯器告訴我不能將'OldEventHandler'轉換爲'NewEventHandler'。 – serhio 2010-02-22 13:21:10