Пример #1
0
 static IMethod ApplyTypeArgumentsToMethod(IMethod genericMethod, IList <IReturnType> typeArguments)
 {
     if (typeArguments != null && typeArguments.Count > 0)
     {
         // apply inferred type arguments
         IMethod method = (IMethod)genericMethod.CreateSpecializedMember();
         method.ReturnType = ConstructedReturnType.TranslateType(method.ReturnType, typeArguments, true);
         for (int i = 0; i < method.Parameters.Count; ++i)
         {
             method.Parameters[i].ReturnType = ConstructedReturnType.TranslateType(method.Parameters[i].ReturnType, typeArguments, true);
         }
         for (int i = 0; i < Math.Min(typeArguments.Count, method.TypeParameters.Count); i++)
         {
             var tp = new BoundTypeParameter(method.TypeParameters[i], method.DeclaringType, method);
             tp.BoundTo = typeArguments[i];
             method.TypeParameters[i] = tp;
         }
         return(method);
     }
     else
     {
         return(genericMethod);
     }
 }
		static IMethod ApplyTypeArgumentsToMethod(IMethod genericMethod, IList<IReturnType> typeArguments)
		{
			if (typeArguments != null && typeArguments.Count > 0) {
				// apply inferred type arguments
				IMethod method = (IMethod)genericMethod.CreateSpecializedMember();
				method.ReturnType = ConstructedReturnType.TranslateType(method.ReturnType, typeArguments, true);
				for (int i = 0; i < method.Parameters.Count; ++i) {
					method.Parameters[i].ReturnType = ConstructedReturnType.TranslateType(method.Parameters[i].ReturnType, typeArguments, true);
				}
				for (int i = 0; i < Math.Min(typeArguments.Count, method.TypeParameters.Count); i++) {
					var tp = new BoundTypeParameter(method.TypeParameters[i], method.DeclaringType, method);
					tp.BoundTo = typeArguments[i];
					method.TypeParameters[i] = tp;
				}
				return method;
			} else {
				return genericMethod;
			}
		}