Exemple #1
0
 protected ParameterDeclaration MapParamType(ParameterDeclaration parameter)
 {
     if (parameter.Type.NodeType == NodeType.GenericTypeReference)
     {
         var gen           = (GenericTypeReference)parameter.Type;
         var genEntityType = gen.Entity as IConstructedTypeInfo;
         if (genEntityType == null)
         {
             return(parameter);
         }
         var trc = new TypeReferenceCollection();
         foreach (var genArg in gen.GenericArguments)
         {
             var replacement = genArg;
             foreach (var genParam in _genericParams)
             {
                 if (genParam.Name.Equals(genArg.Entity.Name))
                 {
                     replacement = new SimpleTypeReference(genParam.Name)
                     {
                         Entity = genParam.Entity
                     };
                     break;
                 }
             }
             trc.Add(replacement);
         }
         parameter            = parameter.CloneNode();
         gen                  = (GenericTypeReference)parameter.Type;
         gen.GenericArguments = trc;
         gen.Entity           = new GenericConstructedType(genEntityType.GenericDefinition, trc.Select(a => a.Entity).Cast <IType>().ToArray());
     }
     return(parameter);
 }