У меня есть довольно простая коллекция многих (слишком много ..) классов в указанном c пространстве имен. У них нет вложенных классов, но есть связанные. Пример (упрощенный):
namespace ConsoleApp1.Methods
{
public class Method100Response201
{
public Method100Response201()
{
super = new Method100Response201_1();
}
public string aName { get; set; }
public string R1_201 { get; set; } = "R1_201";
public Method100Response201_1 super { get; set; }
public void DoSpecialThing()
{
Console.WriteLine ("Something Blue.."); //just complimentary-no use
}
}
public class Method100Response201_1
{
public string aName { get; set; }
public string R1_201_1 { get; set; } = "R1_201_1";
}
public class Method100Response404
{
public void DoSpecialThing()
{
Console.WriteLine ("Something Old..");
}
public string R1_04 { get; set; } = "R1_04";
}
public class Method200Response200
{
public string R2_02 { get; set; } = "R2_02";
}
}
Это то, что у меня есть (учтите, что все мои классы находятся в "ConsoleApp1.Methods"):
Type[] typelist = GetTypesInNamespace (Assembly.GetExecutingAssembly (), "ConsoleApp1.Methods");
for ( int i = 0; i < typelist.Length; i++ )
{
Console.WriteLine ("Found Response Model: "+ typelist[i].Name);
}
Console.ReadKey();
с
private static Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return assembly.GetTypes()
.Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal))
.ToArray();
}
Как я мог преобразовать свой код так, чтобы я получил список только верхних классов ( рассматривают как верхние классы, которые не представлены как типы свойств других классов )
Ожидаемые результаты
Method100Response201
Method100Response404
Method200Response200
, а не Method100Response201_1
, поскольку используется Method100Response201