![](/img/trans.png)
[英]Constructor constraint on generic types or simply check for constraint within my generic type constructor?
[英]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.