一直在阅读并检查其他问题,但不理解/似乎无法在其他任何地方找到我的答案。
假设以下
Public Interface IAudit
Public Class FamilyAudit implements IAudit
Public Class MemberAudit implements IAudit
Public Class AuditPair(Of T As IAudit)
Dim myList as new List(of AuditPair(of IAudit))
Dim famAuditPair as new AuditPair(of FamilyAudit)
Dim memAuditPair as new AuditPair(of MemberAudit)
' This fails
myList.Add(famAuditPair)
myList.Add(memAuditPair)
我收到编译器错误,即 auditPairs 无法隐式转换为 AuditPair(IAudit 的)。这看起来像 co/contra 方差。
MSDN 文档说,从 4.0 开始,列表应该支持方差。
我错过了什么?