internal TypeBuilder (ModuleBuilder mb, string name, TypeAttributes attr, Type parent, Type[] interfaces, PackingSize packing_size, int type_size, Type nesting_type) { int sep_index; this.parent = ResolveUserType (parent); this.attrs = attr; this.class_size = type_size; this.packing_size = packing_size; this.nesting_type = nesting_type; check_name ("fullname", name); if (parent == null && (attr & TypeAttributes.Interface) != 0 && (attr & TypeAttributes.Abstract) == 0) throw new InvalidOperationException ("Interface must be declared abstract."); sep_index = name.LastIndexOf('.'); if (sep_index != -1) { this.tname = name.Substring (sep_index + 1); this.nspace = name.Substring (0, sep_index); } else { this.tname = name; this.nspace = String.Empty; } if (interfaces != null) { this.interfaces = new Type[interfaces.Length]; System.Array.Copy (interfaces, this.interfaces, interfaces.Length); } pmodule = mb; if (((attr & TypeAttributes.Interface) == 0) && (parent == null)) this.parent = typeof (object); // skip .<Module> ? table_idx = mb.get_next_table_index (this, 0x02, true); fullname = GetFullName (); }