Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA2260 |
| Başlık | Genel matematik arabirimlerini doğru uygulama |
| Kategori | Kullanım |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Uyarı olarak |
| Geçerli diller | C# |
Neden
Bu kural, kendi kendine tekrarlayan bir tür parametresi gerektiren genel bir matematik arabirimi uyguladığınızda ve türün kendisini tür parametresi olarak iletmediğinizde tetiklenir.
Kural açıklaması
Bazı genel matematik arabirimleri statik soyut üyeler sunar. Bu statik üyelere erişmenin tek yolu, "merakla yinelenen şablon deseni" (CRTP) uygulayan genel bir kısıtlamadan geçer. Bu nedenle, türetilmiş türün kendisi kendi kendine yinelenen tür parametresi için kullanılmalıdır. Bir tür gerekli tür parametresini geçirmeden böyle bir arabirim uygularsa ve CA2260 yoksayılırsa, kod başarıyla derlenir ancak statik soyut erişilebilir olmaz. Bu nedenle, türü kullanılabilir olmayacaktır. Derleyici, bu tür kullanımda CS0315 kimliğine sahip bir uyarı yayar.
İhlalleri düzeltme
Bu arabirimleri uygularken kendi kendine yinelenen tür parametresi (TSelf) için doğru tür parametresini geçirin.
Örnek
İhlal:
using System;
// Warns: The 'IParsable<TSelf>' requires the 'TSelf' type parameter to be filled with the derived type 'MyDate'
public readonly struct MyDate : IParsable<DateOnly>
{ ... }
Düzeltme:
MyDate türünü IParsable<TSelf> arayüzü için tür parametresi olarak geçirin.
using System;
// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }
Hatalar ne zaman bastırılacak?
Bu kuraldan uyarıyı bastırmayın.