C# 如何计算项目中的类数

C# 如何计算项目中的类数,c#,vb.net,class,vb6,C#,Vb.net,Class,Vb6,我们正在处理VB6和.NET项目,需要计算类的数量 对于vb6,我们总结了标准模块和类模块的总数,这为我们提供了项目中的类总数 对于.NET,我们计算代码隐藏文件的总数,在独立的.vb或.cs文件中,我们计算内部定义的类的数量。此总数被视为最终计数 这是正确的吗?或者在.NET中,独立的.vb或.cs文件应该被视为一个类,而不是计算该文件中的类???对于.NET,我们计算隐藏在文件后面的代码的总数,而在独立的.vb或.cs文件中,我们计算内部定义的类的数量。此总数被视为最终计数。 这是正确的吗?

我们正在处理VB6和.NET项目,需要计算类的数量

对于vb6,我们总结了标准模块和类模块的总数,这为我们提供了项目中的类总数

对于.NET,我们计算代码隐藏文件的总数,在独立的.vb或.cs文件中,我们计算内部定义的类的数量。此总数被视为最终计数


这是正确的吗?或者在.NET中,独立的.vb或.cs文件应该被视为一个类,而不是计算该文件中的类???

对于.NET,我们计算隐藏在文件后面的代码的总数,而在独立的.vb或.cs文件中,我们计算内部定义的类的数量。此总数被视为最终计数。

这是正确的吗?或者在.NET中,独立的.vb或.cs文件是否应该被视为一个类,而不是计算该文件中的类??

不,您不能确保计数文件可以显示类的总数

原因
一,。在.cs或.vb文件中可以有多个类。虽然在代码文件中只有一个类是一种很好的做法,但是.Net并没有限制您在一个文件中有多个类。
二,。通过使用C#中的
partial
关键字和VB.Net中的
partial
关键字,一个类可以存在于多个文件中


因此,请始终计算.Net中类的不同名称。

使用
反射
可以获得特定命名空间上的类数,如下所示帮助我:

int num = (from cal in Assembly.GetExecutingAssembly().GetTypes()
           where cal.Namespace == "ProjNameSpace" && cal.IsClass
           select cal).ToList().Count();


最好的做法是在一个代码文件中只包含一个类,但不需要这样做。我们有一个包含12个类的.vb文件。我认为一个.vb文件本身就是一个类文件。因为您右键单击“项目”并选择“添加类文件”?不是吗?那么,为什么可以在一个类文件中定义更多的类呢?您必须在运行时还是静态地计算它?如果是静态的,您可以在VisualStudio中使用代码度量。(分析->计算解决方案的代码度量)。它还显示了其他有用的信息。唯一的缺点是,metrics只显示已使用的类(已定义但未在任何地方使用不计算)。VS的哪个版本显示了分析选项?我不确定,但我认为上面的任何快速版(如果缺少,有VisualStudio插件-但快速版不支持插件)。是否.cs或.vb本身就是类文件。那么,为什么.NET允许开发人员在这个类文件中定义更多的类呢?现在,用户如何创建对象呢?他们说filename x=newfilename();或者他们说:classnameindefilename x=newclassnameindefilename()@变量:对于第一个问题:将.cs或.vb视为包含代码的文本文件。你可以在里面写任何东西。验证内容的是您的IDE,现在在我们现有的任何IDE中,您的类不超过1个。请回答问题2。@变量:对于第二个问题:它总是
ClassName cn=new ClassName()无论该类位于何处。
AppDomain.CurrentDomain
         .GetAssemblies()
         .SelectMany(cyp => typ.GetTypes())
         .Where(cal => cal.IsClass && cal.Namespace == "ProjNameSpace")
         .ToList().Count();