C #에서 네임 스페이스 내의 모든 클래스를 가져 오려면 어떻게해야합니까?
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);
}
Reflection을 사용하면 어셈블리의 모든 유형을 반복합니다. 유형에는 관심있는 네임 스페이스 만 필터링하는 데 사용하는 Namespace 속성이 있습니다.