Mono.CSharp.MethodData.DefineMethodBuilder C# (CSharp) Method

DefineMethodBuilder() private method

Create the MethodBuilder for the method
private DefineMethodBuilder ( TypeContainer container, string method_name, ParametersCompiled param ) : void
container TypeContainer
method_name string
param ParametersCompiled
return void
        void DefineMethodBuilder(TypeContainer container, string method_name, ParametersCompiled param)
        {
            var return_type = method.ReturnType.GetMetaInfo ();
            var p_types = param.GetMetaInfo ();

            if (builder == null) {
                builder = container.TypeBuilder.DefineMethod (
                    method_name, flags, method.CallingConventions,
                    return_type, p_types);
                return;
            }

            //
            // Generic method has been already defined to resolve method parameters
            // correctly when they use type parameters
            //
            builder.SetParameters (p_types);
            builder.SetReturnType (return_type);
            if (builder.Attributes != flags) {
            #if STATIC
                builder.__SetAttributes (flags);
            #else
                try {
                    if (methodbuilder_attrs_field == null)
                        methodbuilder_attrs_field = typeof (MethodBuilder).GetField ("attrs", BindingFlags.NonPublic | BindingFlags.Instance);
                    methodbuilder_attrs_field.SetValue (builder, flags);
                } catch {
                    container.Compiler.Report.RuntimeMissingSupport (method.Location, "Generic method MethodAttributes");
                }
            #endif
            }
        }

Usage Example

			public override MethodBuilder Define (TypeContainer parent)
			{
				parameters.Resolve (this);
				
				base.Define (parent);

				Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, ModFlags);

				method_data = new MethodData (method, ModFlags, flags, this);

				if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
					return null;

				method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);

				return method_data.MethodBuilder;
			}
All Usage Examples Of Mono.CSharp.MethodData::DefineMethodBuilder