C# 防止使用基窗体/控件类

C# 防止使用基窗体/控件类,c#,C#,我正在做一个项目,我们有10个表单和控件。 在编写程序的过程中,生成了一个继承的表单和控件,该表单和控件应该用于将来的所有表单/控件,因此如果需要在控件级别进行更改。它将应用于整个应用程序 大多数情况下都遵循这一点,但每隔一段时间,就会使用基类生成一个窗体或控件 有没有办法防止使用基本表单/控件,并强制使用特定白名单之外的继承表单/控件?在查看了原始问题注释中提供给我的选项后,我找到了自己的解决方案,该解决方案将适用于我们的开发和部署流程 由@CodeCaster和@JonasH提供的您应该使用

我正在做一个项目,我们有10个表单和控件。 在编写程序的过程中,生成了一个继承的表单和控件,该表单和控件应该用于将来的所有表单/控件,因此如果需要在控件级别进行更改。它将应用于整个应用程序

大多数情况下都遵循这一点,但每隔一段时间,就会使用基类生成一个窗体或控件


有没有办法防止使用基本表单/控件,并强制使用特定白名单之外的继承表单/控件?

在查看了原始问题注释中提供给我的选项后,我找到了自己的解决方案,该解决方案将适用于我们的开发和部署流程

由@CodeCaster和@JonasH提供的您应该使用的第一个解决方案

  • User@CodeCaster,我研究.Net代码质量 以及Roselyn analyzer提供的样式

  • User@JonasH建议我考虑部署一个持续集成服务器,用于构建我们的软件

虽然这个解决方案应该实现,但在我们当前的开发流程中,这是不可能的

第二种解决方案

C#允许您使用反射来迭代所有类,并找到任何基类型为类型形式的类

        Assembly myAssembly = Assembly.GetExecutingAssembly();
        Type[] myTypes = myAssembly.GetTypes();
        foreach (Type type in myTypes)
        {
            if (type?.BaseType?.Name == "Form")
            {
                Console.WriteLine(type.FullName);
            }
        }

然后,您可以使用它过滤掉应该从表单继承的“白名单”表单,并通知开发人员任何其他未被白名单的表单

可以强制所有开发人员使用这些表单吗?上次我使用Roslyn analyzer时,它只为我自己使用。您应该在持续集成服务器上运行所有代码分析。它们包含在您的项目中,并在编译时应用,因此所有开发人员都会看到提示或警告。@JonasH遗憾的是,我们还没有,但我们正在计划在不久的将来使用它。