如何使用C#统计项目中的表单
How to count Forms in project using C#
我使用以下代码在 C# 中使用 Assembly 获取表单计数
int _packCounter = 0;
Assembly assemblies = Assembly.Load("MyProjectName");
Form f = null;
Type[] types = assemblies.GetTypes();
foreach (Type t in types)
{
if (t.IsPublic && t.BaseType == typeof(Form))
{
f = (Form)assemblies.CreateInstance(t.FullName);
if (f.Tag.ToString().ToUpper() != "NO")
{
_packCounter++;
}
}
else if (t.IsPublic && t.BaseType == typeof(MetroForm))
{
f = (MetroForm)assemblies.CreateInstance(t.FullName);
if (f.Tag.ToString().ToUpper() != "NO")
{
_packCounter++;
}
}
}
它工作正常,但它的使用循环,
我的问题是:它是如何在没有任何循环的情况下完成的
编辑:
有人告诉我它可以工作,但是通过使用循环,这段代码将根据我的要求一次又一次地在我的应用程序中使用,所以有时我会遇到性能问题。所以我想避免循环
您可以使用 linq 进行简单的查询,而不是在 forloop 中检查每个
int _packCounter = 0;
Assembly assemblies = Assembly.Load("MyProjectName");
Type[] types = assemblies.GetTypes();
_packCounter = types.Where(x => (x.IsPublic && x.BaseType == typeof(Form)) || (x.IsPublic && x.BaseType == typeof(MetroForm))).Count();
我使用以下代码在 C# 中使用 Assembly 获取表单计数
int _packCounter = 0;
Assembly assemblies = Assembly.Load("MyProjectName");
Form f = null;
Type[] types = assemblies.GetTypes();
foreach (Type t in types)
{
if (t.IsPublic && t.BaseType == typeof(Form))
{
f = (Form)assemblies.CreateInstance(t.FullName);
if (f.Tag.ToString().ToUpper() != "NO")
{
_packCounter++;
}
}
else if (t.IsPublic && t.BaseType == typeof(MetroForm))
{
f = (MetroForm)assemblies.CreateInstance(t.FullName);
if (f.Tag.ToString().ToUpper() != "NO")
{
_packCounter++;
}
}
}
它工作正常,但它的使用循环,
我的问题是:它是如何在没有任何循环的情况下完成的
编辑:
有人告诉我它可以工作,但是通过使用循环,这段代码将根据我的要求一次又一次地在我的应用程序中使用,所以有时我会遇到性能问题。所以我想避免循环
您可以使用 linq 进行简单的查询,而不是在 forloop 中检查每个
int _packCounter = 0;
Assembly assemblies = Assembly.Load("MyProjectName");
Type[] types = assemblies.GetTypes();
_packCounter = types.Where(x => (x.IsPublic && x.BaseType == typeof(Form)) || (x.IsPublic && x.BaseType == typeof(MetroForm))).Count();