我比較泛型類型的is運算符有問題。C#:是具有繼承性的泛型類型的運算符
public interface ISomeInterface<T> where T : SomeBaseClass{
}
public class SomeClass : SomeBaseClass{
}
現在我們要用is運算符來檢查類型。我們有一個實現接口ISomeInterface的類的實例。
不幸的是,我們正面臨着以下問題:
// someObject is an Instance of a class implementing interface ISomeInterface<SomeClass>
bool isSomeBaseClass = someObject is ISomeInterface<SomeBaseClass>; // false
bool isSomeClass = someObject is ISomeInterface<SomeClass>; // true
是否有可能檢查變量泛型類型?
由於提前, 託比
請清理您的C&P - 您的兩個測試都是相同的。一個'someObject'的聲明也會很好。 –
運算符返回「false」的原因是因爲「ISomeInterface」不是** ISomeInterface 的子類型。很容易想象一個例子,第一個到第二個會導致類型安全錯誤。 (例如,將一個'IList '投射到'IList
@millimoose這正是問題所在。但是我怎樣才能檢查它,如果我想成爲一個IList的對象是真實的IList