public MethodBuilder(TypeBuilder TypeBuilder, string Name, MethodAttributes Attributes, IEnumerable<Type> Parameters, Type ReturnType) : base() { if (TypeBuilder == null) throw new ArgumentNullException("TypeBuilder"); if (string.IsNullOrEmpty(Name)) throw new ArgumentNullException("Name"); this.Name = Name; this.Type = TypeBuilder; this.Attributes = Attributes; this.ReturnType = (ReturnType == null) ? typeof(void) : ReturnType; this.Parameters = new List<ParameterBuilder>(); this.Parameters.Add(new ParameterBuilder(null, 0)); if (Parameters != null) { int x = 1; if (Name.StartsWith("set_", StringComparison.InvariantCulture)) x = -1; foreach (Type ParameterType in Parameters) { this.Parameters.Add(new ParameterBuilder(ParameterType, x)); ++x; } } Builder = Type.Builder.DefineMethod(Name, Attributes, ReturnType, (Parameters != null && Parameters.Count() > 0) ? Parameters.ToArray() : System.Type.EmptyTypes); Generator = Builder.GetILGenerator(); }
/// <summary> /// Constructor /// </summary> /// <param name="TypeBuilder">Type builder</param> /// <param name="Attributes">Attributes for the constructor (public, private, etc.)</param> public DefaultConstructorBuilder(TypeBuilder TypeBuilder, MethodAttributes Attributes) : base() { if (TypeBuilder == null) throw new ArgumentNullException("TypeBuilder"); this.Type = TypeBuilder; this.Attributes = Attributes; this.Builder = Type.Builder.DefineDefaultConstructor(Attributes); this.Generator = null; this.Parameters = new List<ParameterBuilder>(); this.Parameters.Add(new ParameterBuilder(null, 0)); }
/// <summary> /// Constructor /// </summary> /// <param name="TypeBuilder">Type builder</param> /// <param name="Attributes">Attributes for the constructor (public, private, etc.)</param> /// <param name="Parameters">Parameter types for the constructor</param> /// <param name="CallingConventions">Calling convention for the constructor</param> public ConstructorBuilder(TypeBuilder TypeBuilder, MethodAttributes Attributes, IEnumerable<Type> Parameters, CallingConventions CallingConventions) : base() { if (TypeBuilder == null) throw new ArgumentNullException("TypeBuilder"); this.Type = TypeBuilder; this.Attributes = Attributes; this.Parameters = new List<ParameterBuilder>(); this.Parameters.Add(new ParameterBuilder(null, 0)); if (Parameters != null) { int x = 1; foreach (Type ParameterType in Parameters) { this.Parameters.Add(new ParameterBuilder(ParameterType, x)); ++x; } } this.CallingConventions = CallingConventions; this.Builder = Type.Builder.DefineConstructor(Attributes, CallingConventions, (Parameters != null && Parameters.Count() > 0) ? Parameters.ToArray() : System.Type.EmptyTypes); this.Generator = Builder.GetILGenerator(); }