public override MethodGenerator CreateGenerator( FieldMetadataFieldBuilderMap instanceFieldBuilders, MethodMetadataFieldBuilderMap methodMetadataFieldBuilders, FieldBuilder dispatcherField) { return new DuckTypeMethodGenerator(this); }
public override MethodGenerator CreateGenerator( FieldMetadataFieldBuilderMap instanceFieldBuilders, MethodMetadataFieldBuilderMap methodMetadataFieldBuilders, FieldBuilder dispatcherField) { var methodInfoField = methodMetadataFieldBuilders[this]; return new ClassMethodGenerator(this, dispatcherField, methodInfoField); }
public static MethodMetadataFieldBuilderMap Generate(TypeBuilder typeBuilder, TypeMetadata metadata) { var methodCount = metadata.Methods.Length; var methodMetadataFields = new MethodMetadataFieldBuilderMap(methodCount); for (var i = 0; i < methodCount; i++) { var method = metadata.Methods[i]; var metadataField = method.MetadataField; var field = typeBuilder.DefineField( metadataField.Name, metadataField.FieldType, Type.EmptyTypes, Type.EmptyTypes, metadataField.FieldAttributes); methodMetadataFields.Add(method, field); } return methodMetadataFields; }
public abstract MethodGenerator CreateGenerator( FieldMetadataFieldBuilderMap instanceFieldBuilders, MethodMetadataFieldBuilderMap methodMetadataFieldBuilders, FieldBuilder dispatcherField);