0

以下が可能かどうか知りたいです。

2 つのリソース マネージャー A と B があります。A だけがすべての文字列エントリを持ち、B だけが A の一部のエントリに対していくつかの代替値を持ちます。

元:

A.foo
A.bar
B.bar

foo が B には存在しないが A には存在する場合、B.foo のようなことを実行できるようにしたいので、A.foo を返します。しかし、B.bar が存在する場合は、A.bar ではなく B.bar を返すようにします。

これは可能ですか?(コンパイル時にコードの正確性を確保するために、文字列セレクターなしでエントリを取得したい)

4

1 に答える 1

0

あなたのクラス (A & B) に階層があるかどうかはわかりませんが、ある場合、これは仮想メソッドの適切なユースケースのようです。

例えば:

public class A
{
    public virtual string foo()
    {
        return "A Foo";
    }

    public string bar()
    {
        return "A Bar";
    }
}

public class B:A
{
    public override string foo()
    {
        return "B Foo";
    }
}

クラス B はクラス A を継承します。クラス A のメソッドを仮想としてマークすることにより、クラス B のメソッドをオーバーライドできます。クラス B がメソッドを実装していない場合Bar()、クラス A のBar()メソッドが呼び出されます。

これはあなたが望んでいたものですか?

于 2012-09-10T18:02:40.087 に答える