我还没有完全理解泛型的一个方面。
假设我有一个泛型类:
public abstract SomeClass<T> where T : SomeInterface
{
public bool DoSomethingsWithT(T theItem)
{
//doStuff!!!
}
public virtual bool IsActive
{
get { return true; }
}
}
基本上,我假设继承这个类的版本是活动的,但我允许其中一些定义自己的版本。
现在稍后,我将在方法中获取一个对象,我知道它将是类型为SomeClass<T>
的对象,但T可以是实现SomeInterface
的任何类。
public bool SomeMethod(object item)
{
var something = item as SomeClass;
return something.IsActive;
}
但是这当然行不通,因为没有名为SomeClass
的类,我也不能做SomeClass<SomeInterface>
,即使另一个类确实从中继承,我也无法进行转换。
通常应该如何处理?我们应该创建一个名为SomeClass
的类,该类继承SomeClass<SomeInterface>
,并在该类中定义IsActive
属性。
如果我要创建一个继承SomeClass<SomeInterface>
的项目集合,我会遇到完全相同的问题。