>>>>>
>>>>>My version returns a list Modules each containing a list of Classes. You'd need something like:
List<IEnumerable<Type>> list =
>>>>> (from m in Assembly.Load(Assemblyname).GetModules() select m.GetTypes().Where(x => x.IsClass)).ToList();
>>>>>
>>>>>foreach ( IEnumerable<Type> t in list)
>>>>> {
>>>>> foreach (Type className in t)
>>>>> {
>>>>> Console.WriteLine("{0}", className.FullName);
>>>>> }
>>>>> }
>>>>
>>>>
>>>>Yes, I figured that out - see other message with AddRange() in GetModInfo()
>>>
>>>Oddly AddRange() was my first idea for modifying your original code:
public static List<Type> GetAssemblyClasses(string assemblyName)
>>> {
>>> var assembly = Assembly.Load(assemblyName);
>>> List<Type> classList = new List<Type>();
>>>
>>> foreach (var module in assembly.GetModules())
>>> {
>>> classList.AddRange(from x in module.GetTypes().Where(x => x.IsClass) select x);
>>> }
>>> return classList;
>>> }
>>
>>
>>Or without linq
>>
>>
>> public static List<Type> GetAssemblyClasses(string assemblyName)
>> {
>> var assembly = Assembly.Load(assemblyName);
>>
>> List<Type> classList = new List<Type>();
>> foreach (var module in assembly.GetModules())
>> {
>> classList.AddRange(module.FindTypes(new TypeFilter(delegate(Type t, object o) { return t.IsClass; }), null));
>> }
>>
>> return classList;
>> }
>>
>
>Ah - I didn't know the FindType() method was there. I even see there's a ready built TypeFilter for name ......
To be honest, I didn't know either. Just stumbled accross
Gregory