Пример #1
0
        public EnumBuilder DefineEnum(string name, TypeAttributes visibility, Type underlyingType)
        {
            ITypeIdentifier ident = TypeIdentifiers.FromInternal(name);

            if (name_cache.ContainsKey(ident))
            {
                throw new ArgumentException("Duplicate type name within an assembly.");
            }

            EnumBuilder eb  = new EnumBuilder(this, name, visibility, underlyingType);
            TypeBuilder res = eb.GetTypeBuilder();

            AddType(res);
            name_cache.Add(ident, res);
            return(eb);
        }
Пример #2
0
        private TypeBuilder DefineType(string name, TypeAttributes attr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type?parent, Type[]?interfaces, PackingSize packingSize, int typesize)
        {
            ArgumentNullException.ThrowIfNull(name, "fullname");
            ITypeIdentifier ident = TypeIdentifiers.FromInternal(name);

            if (name_cache.ContainsKey(ident))
            {
                throw new ArgumentException("Duplicate type name within an assembly.");
            }
            TypeBuilder res = new TypeBuilder(this, name, attr, parent, interfaces, packingSize, typesize, null);

            AddType(res);

            name_cache.Add(ident, res);

            return(res);
        }
Пример #3
0
 internal string GenerateUniqueTypeName(string typeName)
 {
     typeName = CodeIdentifier.MakeValid(typeName);
     return(TypeIdentifiers.AddUnique(typeName, typeName));
 }