private IEnumerable <string> GenericsFrom(IGenericArgumentsProvider genericArgumentsProvider, IGenericParametersProvider genericParametersProvider) { if (genericArgumentsProvider != null) { return(FormatTypes(genericArgumentsProvider.GenericArguments)); } if (genericParametersProvider != null) { return(genericParametersProvider.GenericParameters.Select(p => p.Name)); } return(null); }
public void EnterMember(IMetadataMember member) { IGenericArgumentsProvider type = null; IGenericArgumentsProvider method = null; if (member is TypeSpecification typeSpec) { type = typeSpec.Signature as GenericInstanceTypeSignature; } else if (member is IMemberDescriptor memberRef) { if (memberRef.DeclaringType is TypeSpecification declaringType) { type = declaringType.Signature as GenericInstanceTypeSignature; } if (member is MethodSpecification methodSpec) { method = methodSpec.Signature; } } _genericContexts.Push(new GenericContext(type, method)); }
private IEnumerable<string> GenericsFrom(IGenericArgumentsProvider genericArgumentsProvider, IGenericParametersProvider genericParametersProvider) { if (genericArgumentsProvider != null) return FormatTypes(genericArgumentsProvider.GenericArguments); if (genericParametersProvider != null) return genericParametersProvider.GenericParameters.Select(p => p.Name); return null; }
public GenericContext(IGenericArgumentsProvider type, IGenericArgumentsProvider method) { Type = type; Method = method; }
/// <summary> /// Enters a new generic context with a new method providing type arguments. /// </summary> /// <param name="method">The new method providing the type arguments.</param> /// <returns>The new generic context.</returns> public GenericContext WithMethod(IGenericArgumentsProvider method) => new GenericContext(Type, method);
/// <summary> /// Enters a new generic context with a new type providing type arguments. /// </summary> /// <param name="type">The new type providing the type arguments.</param> /// <returns>The new generic context.</returns> public GenericContext WithType(IGenericArgumentsProvider type) => new GenericContext(type, Method);