Exemple #1
0
        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));
        }
Exemple #3
0
		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);