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
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Uyarı olarak

Neden

Bu kural, kendi kendine yinelenen bir tür parametresi gerektiren genel bir matematik arabirimi uyguladığınızda ve türün kendisini tür parametresi olarak geçirmediğinizde tetikler.

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ü arabirimi için IParsable<TSelf> tür parametresi olarak geçirin.

using System;

// No warning
public readonly struct MyDate : IParsable<MyDate>
{ ... }

Hatalar ne zaman gizlenecek?

Bu kuraldan uyarıyı bastırmayın.

Ayrıca bkz.