C# 静态类的TypeAttribute

C# 静态类的TypeAttribute,c#,.net,reflection,types,reflection.emit,C#,.net,Reflection,Types,Reflection.emit,我正在尝试通过定义一个新类型,但我无法找到将该类型定义为的 例如,假设我要创建以下类型: public static class Hello { } 我可以识别以下属性: TypeAttributes.Class TypeAttributes.Public 但这和我的想法有什么不同 public class Hello { } 我在考虑可能添加TypeAttributes.Abstract(因为不能实例化它),但我不确定,因为抽象类是完全不同的。您可以使用反射来查看c编译器在每种情况下将生

我正在尝试通过定义一个新类型,但我无法找到将该类型定义为的

例如,假设我要创建以下类型:

public static class Hello
{
}
我可以识别以下属性:

TypeAttributes.Class
TypeAttributes.Public
但这和我的想法有什么不同

public class Hello
{
}

我在考虑可能添加
TypeAttributes.Abstract
(因为不能实例化它),但我不确定,因为抽象类是完全不同的。

您可以使用反射来查看c编译器在每种情况下将生成什么

public class Program
{
    public static void Main()
    {
        Console.WriteLine(typeof(StaticClass).Attributes);
        Console.WriteLine(typeof(NotStaticClass).Attributes);
    }
}

public static class StaticClass { }

public class NotStaticClass { }
将产生:

AutoLayout,AnsiClass,Class,Public,Abstract,Sealed,BeforeFieldInit


自动布局、AnsiClass、Class、Public、BeforeFieldInit

出于好奇,您为什么要这样做?对于动态生成的类型,将类装饰为静态会有什么可能的影响?@KirkWoll在编译时没有。但是,在运行时,我希望应用程序在我想要实例化特定类型时抛出异常,例如。嗯,当您尝试使用
Activator
实例化静态类时,它确实会抛出错误,“MissingMethodException:无法创建抽象类”。@KirkWoll有趣!我从没注意到。似乎
TypeAttributes.Abstract
实际上可能是一条出路。我将等待一个更好的解决方案,虽然你可能想看看链接谢谢!如果他们添加一个
Static
type属性就好了。如果我继续为我的新类型创建实例方法,应用程序不会抱怨,这不是我所期望的。使用
TypeAttribute.Static
时,
TypeBuilder
在尝试创建此新类型时应抛出错误。