2011-08-08 12 views
23

me han escrito debajo de un método como este:Método Grupo ReSharper

internal static IList<EmpowerTaxView> GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes(
    IList<EmpowerCompanyTaxData> validEmpowerCompanyTaxDatas, 
    IList<EmpowerTaxView> empowerTaxViews) 
{ 
    IList<EmpowerTaxView> result = new List<EmpowerTaxView>(); 

    foreach (EmpowerCompanyTaxData empowerCompanyTaxData in validEmpowerCompanyTaxDatas) 
    { 
     IList<EmpowerTaxView> validEmpowerTaxViews = 
      GetEmpowerTaxViewsByLongAgencyAndTaxType(
      empowerCompanyTaxData, empowerTaxViews); 

     validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv) 
     { 
       result.Add(etv); 
     }); 
    } 

    return result; 
} 

Y para este método, el ReSharper dice:

validEmpowerTaxViews.ToList().ForEach(delegate(EmpowerTaxView etv) 
{ 
    result.Add(etv); 
}); 

Convertir a Método de grupo. ¿Qué significa esto y qué se debe hacer para deshacerse de esto?

+4

Por cierto, que no tiene * * para "deshacerse de este": no es una advertencia, sólo una sugerencia. Si prefiere mantenerlo en su forma actual porque lo encuentra más claro, no es un problema. –

+0

Sí, lo sé, pero tenía curiosidad por saber cómo deshacerse del error y qué grupo de métodos era. – SaiBand

Respuesta

6

JaredPar ya dio la respuesta correcta, sólo quería sugerir una implementación más sencilla del método:

internal static IList<EmpowerTaxView> GetEmpowerTaxViewsByLongAgencyAndAgencyTaxTypes(
    IList<EmpowerCompanyTaxData> validEmpowerCompanyTaxDatas, 
    IList<EmpowerTaxView> empowerTaxViews) 
{ 
    var results = 
     from empowerCompanyTaxData in validEmpowerCompanyTaxDatas 
     from etv in GetEmpowerTaxViewsByLongAgencyAndTaxType(
      empowerCompanyTaxData, empowerTaxViews) 
     select etv; 
    return results.ToList(); 
} 
+0

Gracias por darme una respuesta detallada. – SaiBand

59

Lo que significa Resharper es que puede expresar el código ForEach más simplemente utilizando el grupo de métodos Add. Ejemplo:

validEmpowerTaxViews.ToList().Foreach(result.Add); 

El grupo método definido por Add es compatible con el delegado esperado por ForEach y por lo tanto el compilador de C# se encargará de hacer la conversión. El valor predeterminado en Resharper es preferir grupos de métodos sobre lambdas y declaraciones explícitas de creación de delegados.

+0

Gracias JaredPar por su sugerencia. – SaiBand

+7

+1 Esta es la única respuesta aquí que intenta explicar el "por qué". – TarkaDaal

6

aceptar la sugerencia de ReSharper para ver qué cambios se hace. Siempre puedes deshacerlos.

Si no está satisfecho con el cambio y no quiere que Resharper lo sugiera en el futuro, puede deshabilitar esa opción específica, las otras seguirán estando disponibles. Vea la respuesta aquí para más detalles.

Resharper: vars

+1

¡Gracias por decirme algo nuevo! – SaiBand