【发布时间】:2011-07-12 16:24:57
【问题描述】:
我还没有完全理解泛型的一个方面。
假设我有一个通用类:
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> 的项目集合,我会遇到同样的问题。
【问题讨论】:
标签: c# generics inheritance abstract-class