[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class ECSComponentAttribute : Attribute {};
public static void Main()
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
if (assembly.IsDynamic) continue;
if (assembly.FullName == "StackExchange.Redis.StrongName") continue;
foreach (Type type in assembly.GetExportedTypes())
var attribs = type.GetCustomAttributes(typeof(ECSComponentAttribute), false);
if (attribs != null && attribs.Length > 0)
Display(0, "DLL {0}", assembly.FullName);
Display(1, "ECS type {0}", type.FullName);
foreach (var fi in type.GetFields() )
Display(2, "Field: {0} {1}", fi.FieldType.Name, fi.Name);
public static void Display(Int32 indent, string format, params object[] param)
Console.Write(new string(' ', indent*2));
Console.WriteLine(format, param);