我正在使用下面的代码来使用程序集
在C#中获取表单计数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++;
}
}
}
它工作正常,但它的使用循环,
我的问题是:如何在没有任何循环的情况下完成
修改:
正如我被告知其工作,但它使用循环,这个代码将根据我的要求一次又一次地使用我的应用程序,所以有一段时间我将面临性能问题。所以我想避免循环
答案 0 :(得分:1)
你可以使用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();