CA1061: Ne rejtse el az alaposztály-metódusokat
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1061 |
Cím | Ne rejtse el az alaposztály-metódusokat |
Kategória | Design |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A származtatott típus ugyanazzal a névvel deklarál egy metódust, amely ugyanolyan számú paraméterrel rendelkezik, mint az egyik alapmetódusa; egy vagy több paraméter a megfelelő paraméter alaptípusa az alapmetódusban; és a fennmaradó paraméterek olyan típusok, amelyek megegyeznek az alapmetódus megfelelő paramétereinek típusával.
Szabály leírása
Az alaptípusban lévő metódusokat egy azonos nevű metódus rejti el egy származtatott típusban, ha a származtatott metódus paraméteraditványa csak olyan típusok szerint különbözik, amelyek gyengébben származnak, mint az alapmetódus paraméter-aláírásában szereplő megfelelő típusok.
Szabálysértések kijavítása
A szabály megsértésének kijavításához távolítsa el vagy nevezze át a metódust, vagy módosítsa a paraméter-aláírást, hogy a metódus ne rejtse el az alapmetódust.
Mikor kell letiltani a figyelmeztetéseket?
Ne tiltsa el a szabály figyelmeztetését.
Példa
Az alábbi példa egy olyan módszert mutat be, amely megsérti a szabályt.
class BaseType
{
internal void MethodOne(string inputOne, object inputTwo)
{
Console.WriteLine("Base: {0}, {1}", inputOne, inputTwo);
}
internal void MethodTwo(string inputOne, string inputTwo)
{
Console.WriteLine("Base: {0}, {1}", inputOne, inputTwo);
}
}
class DerivedType : BaseType
{
internal void MethodOne(string inputOne, string inputTwo)
{
Console.WriteLine("Derived: {0}, {1}", inputOne, inputTwo);
}
// This method violates the rule.
internal void MethodTwo(string inputOne, object inputTwo)
{
Console.WriteLine("Derived: {0}, {1}", inputOne, inputTwo);
}
}
class Test
{
static void Main1061()
{
DerivedType derived = new DerivedType();
// Calls DerivedType.MethodOne.
derived.MethodOne("string1", "string2");
// Calls BaseType.MethodOne.
derived.MethodOne("string1", (object)"string2");
// Both of these call DerivedType.MethodTwo.
derived.MethodTwo("string1", "string2");
derived.MethodTwo("string1", (object)"string2");
}
}
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: