私は継承クラスを持っていますが、イベントメソッドの引数タイプを継承クラスでもある別のタイプに変更しようとしています。C# - オーバーライドメソッドの引数タイプを変更する
元クラス:
public class Alpha {
protected virtual void OnSpecialEvent(AlphaArgs e);
}
public class AlphaArgs {
public AlphaArgs (int a, object b);
public int A { get; }
public object B { get; }
}
私の継承クラス:
public class Beta : Alpha {
protected override void OnSpecialEvent (BetaArgs e)
{
/* Do Stuff */
}
}
public class BetaArgs : AlphaArgs {
public BetaArgs (int a, object b, string c) : base (a, b)
{
/* Do Stuff */
}
public string C { get; }
}
しかし、私はエラーで終わる:
CS0115 'Beta.OnSpecialEvent(BetaArgs)': no suitable method found to override
私はAlphaArgsを使用している場合は、私が持っていません問題はありますが、私は追加したいパラメータよりも余分なパラメータを失います。
は私が欠けている明白な何かがあり、私も、私はあなたが、基本クラスのメソッドをオーバーライドしたい時はいつでも、あなたがそれを上書きするために必要なため...
:BetaArgsはなし、継承チェーンのさらに下にあるので、私はBetaArgsパラメータをOnSpecialEvent渡すことができるのではないでしょうか? – Zuriki