private Dictionary <string, CILantroType> RegisterCustomTypes(CILProgram program) { var result = new Dictionary <string, CILantroType>(); var runtimeTypeFactory = new RuntimeTypeFactory(Program.Assemblies.SingleOrDefault(), program.Modules.SingleOrDefault()); foreach (var cilClass in program.Classes) { Type runtimeType = null; var customType = new CILantroType(cilClass, this); if (RuntimeTypeHelper.GetRuntimeType(cilClass.Extends) == typeof(Enum)) { runtimeType = runtimeTypeFactory.RegisterEnumType(cilClass); } else if (RuntimeTypeHelper.GetRuntimeType(cilClass.Extends) != null) { runtimeType = runtimeTypeFactory.RegisterType(cilClass, this, customType); } cilClass.RuntimeType = runtimeType; customType._runtimeType = runtimeType; result.Add(cilClass.ClassName.UniqueName, customType); } return(result); }