Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Özellik | Değer |
---|---|
Kural Kimliği | CA1033 |
Başlık | Arabirim metotları alt türler tarafından çağrılabilmelidir |
Kategori | Tasarım |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Ağzı açık dışarıdan görünen bir tür açık yöntem uygulaması ortak bir arabirim sağlar ve aynı ada sahip alternatif dışarıdan görünen bir yöntem sağlamaz.
Bir ortak arabirim yöntemini açıkça uygulayan bir temel tür düşünün. Temel türden türetilen bir tür, devralınan arabirim yöntemine yalnızca arabirime aktarılan geçerli örneğe (this
C#'de) yapılan bir başvuru aracılığıyla erişebilir. Türetilmiş tür yeniden kimlikleri (açıkça) devralınan arabirim yöntemi ise, temel uygulamaya artık erişilemiyor. Geçerli örnek başvurusu aracılığıyla yapılan çağrı, türetilmiş uygulamayı çağırır; bu, özyineleme ve nihai yığın taşmasına neden olur.
Bu kural, dışarıdan görünür System.IDisposable.Dispose veya Close()
yöntem sağlandığında açık bir uygulaması System.IDisposable.Dispose(Boolean)
için ihlal bildirmez.
Bu kuralın ihlalini düzeltmek için, aynı işlevselliği kullanıma sunan ve türetilmiş türler tarafından görülebilen veya nonexplicit uygulamasına dönüştürülen yeni bir yöntem uygulayın. Hataya neden olan bir değişiklik kabul edilebilirse, alternatif olarak türün mühürlü olmasını sağlayabilirsiniz.
Aynı işlevselliğe sahip ancak açıkça uygulanan yöntemden farklı bir ada sahip dışarıdan görünür bir yöntem sağlanmışsa, bu kuraldan gelen bir uyarıyı bastırmak güvenlidir.
Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.
#pragma warning disable CA1033
// The code that's violating the rule is on this line.
#pragma warning restore CA1033
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1033.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Aşağıdaki örnekte kuralı ViolatingBase
ihlal eden bir türü ve ihlale yönelik bir düzeltme gösteren bir türü FixedBase
gösterilir.
public interface ITest
{
void SomeMethod();
}
public class ViolatingBase : ITest
{
void ITest.SomeMethod()
{
// ...
}
}
public class FixedBase : ITest
{
void ITest.SomeMethod()
{
SomeMethod();
}
protected void SomeMethod()
{
// ...
}
}
sealed public class Derived : FixedBase, ITest
{
public void SomeMethod()
{
// The following would cause recursion and a stack overflow.
// ((ITest)this).SomeMethod();
// The following is unavailable if derived from ViolatingBase.
base.SomeMethod();
}
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolun