public static IGenericContext CreateCustomMap(IMethod methodDefinition, IMethod methodSpecialization, IMethod additionalMethodDefinition = null) { var context = new MetadataGenericContext(); var customTypeSubstitution = new MutableTypeMap(); var methodSpecAdapter = methodSpecialization as MetadataMethodAdapter; if (methodSpecAdapter != null) { var methodSymbolSpec = methodSpecAdapter.MethodDef; AppendMapping(customTypeSubstitution, methodSymbolSpec); } var methodDefAdapter = methodDefinition as MetadataMethodAdapter; if (methodDefAdapter != null) { var methodSymbolDef = methodDefAdapter.MethodDef; AppendMapping(customTypeSubstitution, methodSymbolDef, true); } if (additionalMethodDefinition != null) { var metadataMethodAdapter = additionalMethodDefinition as MetadataMethodAdapter; if (metadataMethodAdapter != null && methodSpecAdapter != null) { var additionalMethodSymbolDef = metadataMethodAdapter.MethodDef; AppendMethodDirectMapping(customTypeSubstitution, methodSpecAdapter.MethodDef, additionalMethodSymbolDef); } } context.CustomTypeSubstitution = customTypeSubstitution; return(context); }
public static IGenericContext Create(IMethod methodDefinition, IMethod methodSpecialization) { var context = new MetadataGenericContext(methodDefinition); context.MethodSpecialization = methodSpecialization; return(context); }
public static IGenericContext Create(IType typeDefinition, IType typeSpecialization) { var context = new MetadataGenericContext(typeDefinition); context.TypeSpecialization = typeSpecialization; return(context); }
/// <summary> /// </summary> /// <param name="definitionMethod"> /// </param> /// <param name="specializationMethod"> /// </param> /// <returns> /// </returns> public static IGenericContext CreateMap(IMethod definitionMethod, IMethod specializationMethod) { var context = new MetadataGenericContext(); context.Map.GenericMap(definitionMethod.GetGenericParameters(), specializationMethod.GetGenericArguments()); context.Map.GenericMap(definitionMethod.DeclaringType.GenericTypeParameters, specializationMethod.DeclaringType.GenericTypeArguments); return(context); }
/// <summary> /// </summary> /// <param name="definitionMethod"> /// </param> /// <param name="specializationMethod"> /// </param> /// <returns> /// </returns> public static IGenericContext CreateMap(IMethod definitionMethod, IMethod specializationMethod) { var context = new MetadataGenericContext(); context.Map.GenericMap(definitionMethod.GetGenericParameters(), specializationMethod.GetGenericArguments()); context.Map.GenericMap(definitionMethod.DeclaringType.GenericTypeParameters, specializationMethod.DeclaringType.GenericTypeArguments); return context; }
public static IGenericContext CreateCustomMap(IMethod methodDefinition, IMethod methodSpecialization, IMethod additionalMethodDefinition = null) { var context = new MetadataGenericContext(); var customTypeSubstitution = new MutableTypeMap(); var methodSpecAdapter = methodSpecialization as MetadataMethodAdapter; if (methodSpecAdapter != null) { var methodSymbolSpec = methodSpecAdapter.MethodDef; AppendMapping(customTypeSubstitution, methodSymbolSpec); } var methodDefAdapter = methodDefinition as MetadataMethodAdapter; if (methodDefAdapter != null) { var methodSymbolDef = methodDefAdapter.MethodDef; AppendMapping(customTypeSubstitution, methodSymbolDef, true); } if (additionalMethodDefinition != null) { var metadataMethodAdapter = additionalMethodDefinition as MetadataMethodAdapter; if (metadataMethodAdapter != null && methodSpecAdapter != null) { var additionalMethodSymbolDef = metadataMethodAdapter.MethodDef; AppendMethodDirectMapping(customTypeSubstitution, methodSpecAdapter.MethodDef, additionalMethodSymbolDef); } } context.CustomTypeSubstitution = customTypeSubstitution; return context; }
public static IGenericContext Create(IMethod methodDefinition, IMethod methodSpecialization) { var context = new MetadataGenericContext(methodDefinition); context.MethodSpecialization = methodSpecialization; return context; }
public static IGenericContext Create(IType typeDefinition, IType typeSpecialization) { var context = new MetadataGenericContext(typeDefinition); context.TypeSpecialization = typeSpecialization; return context; }