c# - 如何在 .NET 的基类静态方法中获取类类型?

标签 c# .net reflection inheritance

我想做的是类似于:

public abstract class BaseClass
{
    public static Type GetType()
    {
        return typeof(BaseClass);
    }
}

但是当我导出它的时候

public class DerivedClass : BaseClass
{
}

我想得到

Assert.AreEqual(typeof(DerivedClass), DerivedClass.GetType());

如何更改 BaseClass 以使此断言为真?

最佳答案

静态方法不被继承。

当通过派生类之一调用基类的静态方法时,编译器用 BaseClass 替换 DerivedClass。例如,下面是调用 DerivedClass.GetType() 的 IL 代码:

IL_0002:  call   class [mscorlib]System.Type Tests.Program/BaseClass::GetType()

关于c# - 如何在 .NET 的基类静态方法中获取类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4669166/

相关文章:

c# - 通过资源文件将本地化应用到 DisplayAttribute

reflection - 从脚本文件中提取函数

c# - 与日期列表进行比较

c# - 尝试在 sleep 循环中获取锁是否可以(避免死锁、饥饿等...)?

c# - C# 原始数据类型是该语言的一部分吗?

.net - 单声道多声道播放器

c# - 通过具有不同属性类型的反射设置对象的属性

java - 将参数动态传递到 Method.Invoke

c# - 如何从面板中加载的子用户控件访问父类功能/控件

c# - 如何在 WCF 中将类型公开为不同的名称?