internal override void AddInterfaceImplementations( TypeBuilder classBuilder, IEnumerable <InterfaceDescription> interfaceDescriptions) { // ensure that method data types are built for each of the remote interfaces var methodBodyTypesResultsMap = interfaceDescriptions.ToDictionary( d => d, d => this.CodeBuilder.GetOrBuildMethodBodyTypes(d.InterfaceType)); foreach (var item in methodBodyTypesResultsMap) { var interfaceDescription = item.Key; var methodBodyTypesMap = item.Value.MethodBodyTypesMap; foreach (var methodDescription in interfaceDescription.Methods) { var methodBodyTypes = methodBodyTypesMap[methodDescription.Name]; if (TypeUtility.IsVoidType(methodDescription.ReturnType)) { var interfaceMethod = methodDescription.MethodInfo; var methodBuilder = CodeBuilderUtils.CreateExplitInterfaceMethodBuilder( classBuilder, interfaceMethod); var ilGen = methodBuilder.GetILGenerator(); base.AddVoidMethodImplementation2(ilGen, interfaceDescription.Id, methodDescription, interfaceDescription.InterfaceType.FullName); #if !DotNetCoreClr this.AddVoidMethodImplementationV1(ilGen, interfaceDescription.V1Id, methodDescription, methodBodyTypes); #endif ilGen.Emit(OpCodes.Ret); } } } }