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); }
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); }
internal string GenerateUniqueTypeName(string typeName) { typeName = CodeIdentifier.MakeValid(typeName); return(TypeIdentifiers.AddUnique(typeName, typeName)); }