如何判断Type是否是静态类?

Bin*_*ier 10 .net c# reflection

可能重复:
确定类型是否为静态

重复 确定类型是否为静态

是否有一个属性/属性我可以检查是否System.Type是一个静态类?

我可以间接地做到这一点,通过测试的Type有静态方法,并没有实例方法超越那些来自继承System.Object,但它不觉得干净(我暗自怀疑我失去了一些东西,这是不够严谨的定义static class).

是否有什么我失踪的类型,将断然告诉我,这是一个静态类?

或者是static classc#语法糖,没有办法在IL中表达它?

谢谢
BW

jas*_*per 12

是的,你需要测试两者IsAbstract和IsSealed.非静态类永远不能同时存在.不是很棒,但它确实有效.


Ste*_* P. 6

在IL级别,任何静态类都是抽象和密封的.所以你可以这样做:

    Type myType = typeof(Form1);
    if (myType.GetConstructor(Type.EmptyTypes) == null && myType.IsAbstract && myType.IsSealed)
    {
        // class is static
    }
Run Code Online (Sandbox Code Playgroud)