簡體   English   中英

多個約束類型或檢查Generic是什么類型的?

[英]Multiple Constraint Types or check what type the Generic is?

我有一個需要Generic類型的Base類。 這可以是EntityObject也可以是我的自定義類型。
我需要一種方法將Base類約束為EITHER類型,我還需要一種方法來檢查Generic是否屬於某種類型。
當我做if (T is EntityObject)或者if (typeof(T) is EntityObject)它或者說我使用T作為變量,或者對於typeof(T)我得到它“永遠不會是給定類型”。

您可以使用:

if (typeof(T) == typeof(EntityObject))

要么

if (typeof(EntityObject).IsAssignableFrom(typeof(T)))

根據您的要求。 (有關詳細信息,請參閱Type.IsAssignableFrom的文檔。)

當然,這是一個執行時間檢查 - 在編譯時你不能有“一個......”約束。 根據您的情況,有兩個不同命名和約束的公共方法可能適合調用一個不受約束的私有方法(由於僅從公共方法調用,因此“知道”您有一個合適的類型)。

沒有辦法限制兩種不相關的類型。 您需要一個公共類型(如接口)或兩個版本的受約束泛型類。

假設T不受約束,您可以使用if (typeof(T).Equals(typeof(EntityObject))) { ... }來檢查T是否屬於某種類型。

暫無
暫無

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

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