相关疑难解决方法(0)

为什么我不能将List <Derived>分配给List <Base>?

我定义了以下类:

public abstract class AbstractPackageCall
    {

     ...

    }
Run Code Online (Sandbox Code Playgroud)

我还定义了这个类的子类:

class PackageCall : AbstractPackageCall
    {

      ...
    }
Run Code Online (Sandbox Code Playgroud)

还有其他几个子节 AbstractPackageCall

现在我想进行以下调用:

 List<AbstractPackageCall> calls = package.getCalls();
Run Code Online (Sandbox Code Playgroud)

但我总是得到这个例外:

Error   13  Cannot implicitly convert type 'System.Collections.Generic.List<Prototype_Concept_2.model.PackageCall>' to 'System.Collections.Generic.List<Prototype_Concept_2.model.AbstractPackageCall>' 
Run Code Online (Sandbox Code Playgroud)

这里有什么问题?这是Package#getCalls的方法

 internal List<PackageCall> getCalls()
        {
            return calls;
        }
Run Code Online (Sandbox Code Playgroud)

.net c# generics covariance

22
推荐指数
1
解决办法
7087
查看次数

标签 统计

.net ×1

c# ×1

covariance ×1

generics ×1