我很确定我知道答案(你不能这样做),但我想看看我是否错过了什么。
如果我有课程:
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,而不执行该方法并调查我回来的对象,对吗?
答案 0 :(得分:1)
你是对的。没有执行代码就无法知道实际的返回类型,因为实际的返回类型可能取决于仅在运行时已知的因素,并且可能因执行而异(例如,根据传递给方法的参数或返回其他方法的值)。
答案 1 :(得分:0)
正确。
我认为DoSomething方法的目的是返回一个特定的派生类型,并且能够将它作为一般用途用作Foo。
在这种情况下,我不确定知道要返回的派生类型有什么好处,但这可能不是你的问题。 :)