CA2223: Los miembros deben diferenciarse por algo más que por un tipo de valor devuelto
Nombre de tipo |
MembersShouldDifferByMoreThanReturnType |
Identificador de comprobación |
CA2223 |
Categoría |
Microsoft.Usage |
Cambio problemático |
Sí |
Causa
Dos miembros públicos o protegidos tienen firmas idénticas excepto el tipo de valor devuelto.
Descripción de la regla
Aunque Common Language Runtime permite utilizar tipos de valor devuelto para diferenciar miembros idénticos, esta característica no se encuentra en Common Language Specification ni es común en los lenguajes de programación de .NET. Cuando los miembros sólo se diferencian por el tipo de valor devuelto, los desarrolladores y las herramientas de desarrollo no se distinguen correctamente.
Cómo corregir infracciones
Para corregir una infracción de esta regla, cambie el diseño de los miembros para que sólo se basen en sus nombres y tipos de parámetros o para que no expongan los miembros.
Cuándo suprimir advertencias
No suprima las advertencias de esta regla.
Ejemplo
El ejemplo siguiente, en lenguaje intermedio de Microsoft (MSIL), muestra un tipo que infringe esta regla. Observe que esta regla no se puede infringir con C# o Visual Basic .NET.
.namespace UsageLibrary
{
.class public auto ansi beforefieldinit ReturnTypeTest
extends [mscorlib]System.Object
{
.method public hidebysig instance int32
AMethod(int32 x) cil managed
{
// Code size 6 (0x6)
.maxstack 1
.locals init (int32 V_0)
IL_0000: ldc.i4.0
IL_0001: stloc.0
IL_0002: br.s IL_0004
IL_0004: ldloc.0
IL_0005: ret
} // end of method ReturnTypeTest::AMethod
.method public hidebysig instance string
AMethod(int32 x) cil managed
{
// Code size 10 (0xa)
.maxstack 1
.locals init (string V_0)
IL_0000: ldstr "test"
IL_0005: stloc.0
IL_0006: br.s IL_0008
IL_0008: ldloc.0
IL_0009: ret
} // end of method ReturnTypeTest::AMethod
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method ReturnTypeTest::.ctor
} // end of class ReturnTypeTest
} // end of namespace UsageLibrary