假设我们有这两个类:
public class Base
{
public static int GetInt() { return 1; }
}
public class Derived : Base
{
}
我们还要说一段代码调用Derived.GetInt()。我怎样才能从GetInt()中告诉它是Derived.GetInt()而不是被调用的Base.GetInt()?我使用什么反射技术?
答案 0 :(得分:0)
没有办法用反射或其他方式区分。这些调用完全相同,在编译时,已经处于MSIL级别,没有区别。
答案 1 :(得分:0)
我不认为你这样做,因为 没有Derived.GetInt。 GetInt是一个静态成员,虽然你通过Derived引用它,但它只属于Base。
答案 2 :(得分:0)
由于方法GetInt是静态方法,而不是实例方法,因此将始终从基类调用它。您无法从派生类中真正调用它,因为您没有从实例中调用它。
答案 3 :(得分:0)
如果您希望根据调用该方法的类具有不同的功能,则可以执行此操作。
void Main()
{
Console.WriteLine( Base.GetInt() ); // 1
Console.WriteLine( Derived.GetInt() ); // 2
}
public class Base
{
public static int GetInt()
{
return 1;
}
}
public class Derived : Base
{
public static int GetInt()
{
return 2;
}
}
答案 4 :(得分:0)
最好将静态方法简单地视为全局函数。类名称用作扩展名称空间。