Exemple #1
0
 /// <summary>
 /// Adiciona un nuevo tipo a  la clase codigo
 /// </summary>
 /// <param name="typeCodeName"></param>
 /// <param name="type"></param>
 public void AddTypeBuilder(string typeCodeName, Type type)
 {
     if (DefinedType.ContainsKey(typeCodeName))
     {
         throw new ArgumentException("Un tipo con ese nombre ya fue declarado en el codigo");
     }
     DefinedType.Add(typeCodeName, type);
 }
Exemple #2
0
        /// <summary>
        /// Devuelve un tipo dado su nombre. Si el tipo no esta definido se crea solamente con el nombre
        /// </summary>
        /// <param name="typeCodeName"></param>
        /// <returns></returns>
        public Type GetTypeBuilderMaybeNotCreated(string typeCodeName)
        {
            if (DefinedType.ContainsKey(typeCodeName))
            {
                return(DefinedType[typeCodeName]);
            }

            DefinedType.Add(typeCodeName, Module.DefineType(typeCodeName));
            return(DefinedType[typeCodeName]);
        }
Exemple #3
0
        /// <summary>
        /// Asocia una funcion con el wrapper que ella crea.
        /// </summary>
        /// <param name="functionCodeName"></param>
        /// <param name="typeWrapperCodeName"></param>
        public void AsociatteMethodToWrapper(string functionCodeName, string typeWrapperCodeName)
        {
            if (!DefinedMethod.ContainsKey(functionCodeName))
            {
                throw new ArgumentException("La funcion debe ser annadida antes");
            }
            if (!DefinedType.ContainsKey(typeWrapperCodeName))
            {
                throw new ArgumentException("El tipo tiene que ser annadido antes");
            }
            if (FuntionWrapper.ContainsKey(functionCodeName))
            {
                throw new ArgumentException("Ya se ha asociado esa funcion a ese tipo");
            }

            var typeBuilder = (TypeBuilder)DefinedType[typeWrapperCodeName];


            var typeCodeInfo = new TypeCodeInfo {
                TypeCodeName = typeWrapperCodeName, Type = typeBuilder
            };

            FuntionWrapper.Add(functionCodeName, typeCodeInfo);
        }