C #에서 네임 스페이스 내의 모든 클래스를 가져 오려면 어떻게해야합니까?
답변
당신은 그것을 “뒤로”해야 할 것입니다; 어셈블리의 모든 형식을 나열한 다음 각 형식의 네임 스페이스를 확인합니다.
using System.Reflection;
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return
assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
사용 예 :
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
Assembly.GetExecutingAssembly()
사용할 수없는 .Net 2.0 이전의 경우 어셈블리를 가져 오려면 작은 해결 방법이 필요합니다.
Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly;
Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>");
for (int i = 0; i < typelist.Length; i++)
{
Console.WriteLine(typelist[i].Name);
}
답변
좀 더 많은 정보를 제공해야합니다 …
리플렉션을 사용한다는 뜻입니까? 어셈블리 매니페스트를 반복하고 다음을 사용하여 형식 목록을 가져올 수 있습니다.
System.Reflection.Assembly myAssembly = Assembly.LoadFile("");
myAssembly.ManifestModule.FindTypes()
Visual Studio에만있는 경우 인텔리 센스 창에서 목록을 가져 오거나 개체 브라우저 (CTRL + W, J)를 열어서 가져올 수 있습니다.
답변
Reflection을 사용하면 어셈블리의 모든 유형을 반복합니다. 유형에는 관심있는 네임 스페이스 만 필터링하는 데 사용하는 Namespace 속성이 있습니다.