Çalışma zamanı derleme yükü yapıyorum, ancak sınıfların veya yöntemlerin adlarını bilmiyorum. System.Object öğesinden devralınanlar değil, tüm sınıfları derleme yöntemleriyle listelemedim.Çalışma zamanı derleme yüklemesi yapılırken yalnızca bildirilen yöntemleri nasıl bulabilirim?
public class component01
{
public string myName = "component01";
public string getMyName()
{
return myName;
}
}
public class component02
{
public string myName = "component02";
public string getMyName()
{
return myName;
}
}
sonuç:
component01
component02
And if i remove the bindingflag:
component01
getMyName
ToString
Equals
GetHashcode
GetType
component02
getMyName
ToString
Equals
GetHashcode
GetType
Sadece gösterilen getMyName
yöntemi istiyorum
string str = "";
Assembly assembly = Assembly.LoadFile(@"c:\components.dll");
foreach (Type type in assembly.GetTypes())
{
if (type.IsClass == true)
{
str += type.Name + "\n";
MethodInfo[] methodInfo = type.GetMethods(BindingFlags.DeclaredOnly);
foreach (MethodInfo mi in methodInfo)
{
str += "\t" + mi.Name + "\n";
}
}
}
MessageBox.Show(str);
Bu components.dll geçerli:
Bu
kodudur.BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly
Sen gereksinimlerine bağlı olarak, hem de BindingFlags.NonPublic
koymak isteyebilirsiniz:
Mükemmel çalışıyor, teşekkürler! Daha önce hem Public hem de DeclaredOnly kullanmayı denedim, ama bu işe yaramadı. Neden üçünü de belirtmem gerekiyor? – Bildsoe
@Bildsoe: 'System.Reflection.BindingFlags' bir flag-enum'dur. Eşgörünüm bayrağı ayarlanmadığında, 'GetMethods' örnek yöntemleri içermez. – Ani
tamam, teşekkürler. Sadece düşündüm ki, eğer yöntem söz konusu ise, bu dahil olacaktı. – Bildsoe