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>
{ ... }
隱藏錯誤的時機
請勿隱藏此規則的警告。