我有一个我创建的泛型类:
public abstract class MyClass<T>
{
public T Model
{
get;
protected set;
}
}
在我的代码的某些时候,我想用MyClass类型做任何事情。类似的东西:
private void MyMethod(object param)
{
myClassVar = param as MyClass;
param.Model....etc
}
这可能吗?或者我是否需要将MyClass作为某个子类(MyClassBase)或实现接口(IMyClass)?
答案 0 :(得分:11)
我相信您需要的是使MyMethod方法通用并在其类型参数上添加约束:
interface IMyInterface
{
void Foobar();
}
class MyClass<T>
{
public T Model
{
get;
protected set;
}
}
private void MyMethod<T>(MyClass<T> param) where T : IMyInterface
{
param.Model.Foobar();
}
答案 1 :(得分:5)
没有
您需要继承非泛型基类或实现非泛型接口。
请注意,您将无法使用Model
属性,因为它不能具有类型(除非您将其约束为基类型并显式实现非类型化属性)。
答案 2 :(得分:3)
是的,你需要。如果未定义泛型类的类型,则需要创建泛型接口或使用基类...