使用反射确定方法的返回类型?

时间:2012-08-02 20:18:14

标签: .net reflection

我很确定我知道答案(你不能这样做),但我想看看我是否错过了什么。

如果我有课程:

public class Foo
{
}

public class Bar : Foo
{
}

一种方法:

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

我说的是没有办法知道" true'返回类型的DoSomething没有执行方法?,意思是,如果我这样做:

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

没有办法真正知道DoSomething实际上会返回一个Bar,而不执行该方法并调查我回来的对象,对吗?

2 个答案:

答案 0 :(得分:1)

你是对的。没有执行代码就无法知道实际的返回类型,因为实际的返回类型可能取决于仅在运行时已知的因素,并且可能因执行而异(例如,根据传递给方法的参数或返回其他方法的值)。

答案 1 :(得分:0)

正确。

我认为DoSomething方法的目的是返回一个特定的派生类型,并且能够将它作为一般用途用作Foo。

在这种情况下,我不确定知道要返回的派生类型有什么好处,但这可能不是你的问题。 :)