public ILEnumBuilder DefineEnum(string enumName, TypeAttributes attributes) { if (this.IsBuild) { throw new DefinitionException("Derlenmiş assembly üzerinde yeni tip tanımlanamaz."); } if (this._definedEnums.ContainsKey(enumName)) { throw new DefinitionException(enumName + " isimli tür daha önce tanımlanmış."); } if (this._definedTypes.ContainsKey(enumName)) { throw new DefinitionException(enumName + " isimli tür daha önce tanımlanmış."); } if (this._compiledTypes.ContainsKey(enumName)) { throw new DefinitionException(enumName + " isimli tür daha önce tanımlanmış."); } ILEnumBuilder builder = new ILEnumBuilder(this, enumName, attributes); this._definedEnums.Add(enumName, builder); return(builder); }
public Type CompileType(ILEnumBuilder builder) { EnumBuilder realBuilder = builder.EnumBuilder; Type createdType = realBuilder.CreateType(); this._compiledTypes.Add(builder.Name, createdType); this._definedEnums.Remove(builder.Name); return(createdType); }
public void Build() { ILEnumBuilder[] definedEnums = new ILEnumBuilder[this._definedEnums.Count]; this._definedEnums.Values.CopyTo(definedEnums, 0); ILTypeBuilder[] definedTypes = new ILTypeBuilder[this._definedTypes.Count]; this._definedTypes.Values.CopyTo(definedTypes, 0); for (int i = 0; i < definedEnums.Length; i++) { this.CompileType(definedEnums[i]); } for (int i = 0; i < definedTypes.Length; i++) { this.CompileType(definedTypes[i]); } this._isBuild = true; }