0

私はこれを行うための最良の方法を見つけようとしています:

抽象クラス A と多くの具体的な派生クラスがあり、それらを D1..DN と呼びましょう。各派生クラスには、文字列を取得して解析し、具体的なクラスに応じて型を返すメソッドが必要です。したがって、Abstract クラスの戻り値の型がわからないため、関数を正常に定義できません。私が見つけたのは dynamic キーワードです。次のようなことができます:

public dynamic Parse(); 私の抽象クラスでは、各具象クラスはそれをオーバーライドして、必要な型を返すことができますが、これを使用するアプリでは、返される型を知りたいので、これはまったく良いことではありません。

他のオプションはありますか?最悪のシナリオは、ポリモーフィズムを行わず、メイン アプリで抽象クラスに、それがどのクラスであるかを確認し、それに応じて戻り値の型を設定するかどうかを尋ねます。

編集: 悪い設計です。問題を再考し、ポリモーフィズムを使用したより良いアプローチを見つける必要があります。お時間いただき申し訳ありません:)。最悪の場合、return オブジェクトと何百万行もの ifs を使用します。

4

3 に答える 3

3

ジェネリックを探しています:

abstract class ParserBase<T> {
    public abstract T Parse(string input);
}

abstract class ThingyParser : ParserBase<Thingy> {
    public override Thingy Parse(string input);
}
于 2013-04-29T02:40:21.480 に答える