CA2260: Genel matematik arabirimlerini doğru uygulama

Ö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.

Ayrıca bkz.