C#使用泛型类而不指定类型

Kri*_*rip 12 c# generics

我有一个我创建的泛型类:

public abstract class MyClass<T>
{
    public T Model
    {
        get;
        protected set;
    }        
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某些时候,我想用MyClass类型做任何事情.就像是:

private void MyMethod(object param)
{
    myClassVar = param as MyClass;
    param.Model....etc
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?或者我是否需要使MyClass成为某个子类(MyClassBase)或实现接口(IMyClass)?

Yur*_*kiy 13

我相信你需要的是使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();
}
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 5

没有。

您需要继承一个非通用基类或实现一个非通用接口。

请注意,您将无法使用该Model属性,因为它不能具有类型(除非您将其限制为基本类型并显式实现无类型的属性)。