我使用下面的代碼使用大會如何使用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'獲取類型的屬性,甚至檢查*特定的*屬性類型 –