CA2260:正確實作泛型數學介面

屬性
規則識別碼 CA2260
標題 正確實作泛型數學介面
類別 使用方式
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 作為警告

原因

當您實作需要自我週期性類型參數的泛型數學介面,而且您不會傳遞類型本身做為類型參數時,就會引發此規則。

檔案描述

某些泛型數學介面引進靜態抽象成員。 存取這些靜態成員的唯一方法是透過實作「好奇的週期性範本模式」(CRTP) 的泛型條件約束。 因此,衍生型別本身必須用於自我週期性型別參數。 如果類型實作這類介面而不傳遞必要的類型參數,而且會忽略 CA2260,程式碼將會成功編譯,但無法存取靜態抽象。 因此,類型將無法使用。 編譯器會在這類使用方式上發出識別碼為 CS0315 的警告。

如何修正違規

實作這些介面時,傳遞自我週期性類型參數的正確類型參數 (TSelf)。

範例

違規

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>
{ ... }

修正

傳遞 MyDate 型別做為介面的 IParsable<TSelf> 型別參數。

using System;

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

隱藏錯誤的時機

請勿隱藏此規則的警告。

另請參閱