示例#1
0
        /// <summary>
        /// Add a class to this module
        /// If this class already exists, throw an exception
        /// </summary>
        /// <param name="aClass">The class to be added</param>
        public void AddClass(ClassDef aClass)
        {
            Contract.Requires(aClass != null);
            ClassDef eClass = GetClass(aClass.NameSpace, aClass.Name);

            if (eClass != null)
            {
                throw new DescriptorException("Class " + aClass.NameString());
            }
            classes.Add(aClass);
            // MERGE change Refs to Defs here, fix this
            aClass.SetScope((PEFile)this);
        }
示例#2
0
        /*------------------------- public set and get methods --------------------------*/

        /// <summary>
        /// Add a class to this Module
        /// If this class already exists, throw an exception
        /// </summary>
        /// <param name="attrSet">attributes of this class</param>
        /// <param name="nsName">name space name</param>
        /// <param name="name">class name</param>
        /// <returns>a descriptor for this new class</returns>
        public ClassDef AddClass(TypeAttr attrSet, string nsName, string name)
        {
            //FIXME Contract.Requires(classes != null);
            ClassDef aClass = GetClass(nsName, name);

            if (aClass != null)
            {
                throw new DescriptorException("Class " + aClass.NameString());
            }
            aClass = new ClassDef((PEFile)this, attrSet, nsName, name);
            classes.Add(aClass);
            return(aClass);
        }