我使用下面的代码使用大会如何使用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++;
}
}
}
它做工精细,但它的使用环路来获得在C#的形式计算在项目的形式,
我的问题是:如何它没有任何环
编辑完成:
据我所知,它的Worki ng但通过使用Loop,这个代码将会一次又一次地用于我的应用程序,因为我的需求,所以有些时候我会遇到性能问题。所以我想避免循环
你到底是什么计数? *“它工作正常,但它的使用循环”* - 循环的问题是什么? – Sinatr
你不算表格。你正在寻找特定类型和他们的孩子。事实上,循环有什么问题?太慢了?没有得到你所期望的?由于编码效率低,就像使用'ToString().ToUpper()'而不是'String.Equals()',并且不区分大小写选项? –
或者您是否实例化每个表单以搜索特定的属性值?再次,这不是循环的问题。使用*属性*,如果你想附加信息到一个类,就像.NET使用'Serializable','DisplayColumn'等一样。你可以用'Type.GetAttributes'获取类型的属性,甚至检查*特定的*属性类型 –