1

私はこれに対する答えを知っていると確信しています(あなたにはできないということです)が、何かを見逃していないかどうかを確認したかった.

クラスがある場合:

public class Foo
{
}

public class Bar : Foo
{
}

そして方法:

public Foo DoSomething()
{
  return new Bar();
}

メソッドを実行しないと、DoSomething の「真の」戻り値の型が何であるかを知る方法がないというのは正しいですか?

MethodInfo mi = this.GetType().GetMethod("DoSomething", BindingFlags.Public | BindingFlags.Instance);
//at this point, mi.ReturnType will be of type "Foo".

DoSomething が実際にバーを返すことを実際に知る方法はありません。メソッドを実行して、返されたオブジェクトを調査する必要があります。

4

2 に答える 2

1

あなたは正しいです。コードを実行せずに実際の戻り値の型を知る方法はありません。実際の戻り値の型は、実行時にのみ認識される要因に依存する可能性があり、実行ごとに異なる可能性があるためです (たとえば、メソッドに渡されたパラメーターや他のメソッドの戻り値)。

于 2012-08-02T20:37:10.737 に答える
0

正しい。

DoSomething メソッドのポイントは、特定の派生型を返し、それを一般的な目的で Foo として使用できるようにすることだと思います。

その場合、返される派生型を知ることの利点が何であるかはわかりませんが、それはおそらくあなたの質問ではありません. :)

于 2012-08-02T20:39:12.333 に答える