簡體   English   中英

通用約束:強制類型具有靜態函數和帶參數的構造函數

[英]Generic constraint: Enforce type to have static function and constructor with parameters

我知道你可以寫:

class GenericClass<T> where T : new()
{ 

}

強制執行T有一個空構造函數。

我的Qs是:

  1. 你能強制說T有一個具有特定參數類型的構造函數嗎? 喜歡:

     class SingletonFactoryWithEmptyConstructor<T> where T : new(int) 
  2. 你能強制執行T有一個靜態函數(比方說, void F() ),這樣你就可以在泛型類中使用這個函數嗎? 喜歡 :

     class GenericClass<T> where T : void F() { void G () { TF(); } } 

    我知道你可以指定T實現一個接口,但我不希望這樣。 我想指定T具有靜態函數。

不,在C#中沒有這樣的東西。

我之前曾建議“靜態接口”可以合理地表達這一點。 它們對泛型類型約束有用(我懷疑,無論如何)但是你可以表達:

  • 具有任意參數的構造函數
  • 靜態方法和屬性
  • 運營商

在我看來,這些要點中的最后一點特別有趣,允許使用具有合適的加法和除法運算符的數字類型的通用“平均”方法。

我相信MS的一些人已經考慮過類似的東西,但我沒有聽到任何暗示他們正在積極研究的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM