CA1061: Taban sınıf yöntemlerini gizlemeyin
TürAdı |
Taban sınıf yöntemlerini gizlemeyin |
CheckId |
CA1061 |
Kategori |
Microsoft.Tasarım |
Bozan Değişiklik |
Bozan |
Sebep
Bir türetilmiş tür, temel yöntemindekiyle aynı sayıda parametreye sahip ve de aynı isimde bir yöntem bildirir, bir veya daha fazla sayıda parametre temel yöntemdeki parametreye karşılık gelen temel türdür. Geriye kalan parametreler ise temel yöntemdekine karşılık gelen parametrelerle aynıdır.
Kural Tanımı
türetilmiş yöntemin parametre imzası, temel yöntem içindeki parametre imzasında karşılık gelen türlerden daha zayıf türetildiyse ve de başka farklılık yoksa, temel türdeki yöntem tür aynı adlandırılmış türetilmiş türdeki tarafından gizlenir.
İhlallerin Düzeltilmesi
Bu kuralı ihlal düzeltmek için kaldırma, yeniden adlandırma yöntemini veya parametre imza değiştirebilir, böylece yöntemi temel yöntemi gizlemez.
Uyarılar Ne Zaman Bastırılmalı
Bu kuraldan bir uyarı gizlemeyin.
Örnek
Aşağıdaki örnek kural ihlaline neden olan bir türü gösterir.
using System;
namespace DesignLibrary
{
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 Main()
{
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");
}
}
}