不是用CodeDom生成的抽象类

本文关键字:抽象类 CodeDom | 更新日期: 2023-09-27 17:50:24

我有这样的类定义:

CodeTypeDeclaration helloWorldClass = new CodeTypeDeclaration("HelloWorld") {
     Attributes = MemberAttributes.Abstract | MemberAttributes.Public
};

为什么这个声明生成一个非抽象类?

public class HelloWorld
{
}

不是用CodeDom生成的抽象类

您需要使用CodeTypeDeclaration.TypeAttributes而不是MemberAttributes:

CodeTypeDeclaration helloWorldClass = new CodeTypeDeclaration("HelloWorld") 
{
     TypeAttributes = TypeAttributes.Abstract | TypeAttributes.Public
};

为什么要添加Attributes属性呢定义类型?

在文档中明确指定:

一些标志,如抽象,与标志的含义重叠在继承的CodeTypeDeclaration的Attributes属性中从CodeTypeMember。属性的副作用继承CodeTypeMember的CodeTypeDeclaration类,以便类可以嵌套。TypeAttributes属性中的标志应该

为了使用这样的继承层次结构,他们做了一个轻微的混淆复制。这就是为什么好的文档很重要。