Exemple #1
0
        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);
        }