public TypeBuilder(Assembly assembly, string name, IEnumerable<Type> interfaces,
Type baseClass, TypeAttributes attributes)
{
if (assembly == null)
throw new ArgumentNullException("assembly");
if (string.IsNullOrEmpty(name))
throw new ArgumentNullException("name");
Assembly = assembly;
Name = name;
Interfaces = new List<Type>();
if (interfaces != null)
Interfaces.Add(interfaces);
BaseClass = baseClass;
Attributes = attributes;
Methods = new List<IMethodBuilder>();
Fields = new List<FieldBuilder>();
Properties = new List<IPropertyBuilder>();
Constructors = new List<IMethodBuilder>();
Builder = assembly.Module.DefineType(assembly.Name + "." + name, attributes, baseClass,
Interfaces.ToArray(x => x));
}