[Mono-list] Another reflection issue

Miguel de Icaza miguel@ximian.com
08 Jan 2002 18:16:12 -0500


> Anybody have a clue why this:
> 
> 	private static string GetKind(Type t)
> 	{
> 		if (t.IsClass)     return "class";
> 		if (t.IsInterface) return "interface";
> 
> 		// FIXME: IsEnum doesn't seem to return a correct value,
> 		// and all enums end up in the XML as 'struct'
> 
> 		if (t.IsEnum)      return "enum";
> 		if (t.IsValueType) return "struct";
> 		else               return "UNKNOWN";
> 	}

Try changing it to:

	if (t.IsValueType){
		if (t.BaseType.FullName == "System.Enum")
			...

The compiler has a similar issue, because testing for something is done
against a type loaded from an assembly, which might not be the same type
the runtime has.

Miguel