【问题标题】:Cannot implicitly convert derived type to its base generic type -无法将派生类型隐式转换为其基本泛型类型 -
【发布时间】:2016-11-15 21:13:55
【问题描述】:

我在以下方式使用泛型

Public Class ActionResult(Of T)

Private mResultInfo As T
Public Property ResultInfo() As T
    Get
        Return mResultInfo
    End Get
    Set(ByVal value As T)
        mResultInfo = value
    End Set
End Property
End Class



Public Class AnalysisResult
   Public Property ResultFileName As String
   Public Property ResultValue As String
End Class


Public Class TestAnalysisResult
  Inherits AnalysisResult
  Public Property Score As Long
End Class

Public Function PerformAnalysis(analysisParameters As AnalysisParameters) As ActionResult(Of AnalysisResult)
  Dim actionResult As New ActionResult(Of TestAnalysisResult)
  Return actionResult ' Causing me compile time error. Cannot implicitly convert derived type to its base generic type
End Function

我相信派生类可以被种姓到基类。 但不知何故,上面的东西不起作用。我用谷歌搜索,似乎与协方差有关?
有人可以在这里说明一下吗?
谢谢。

【问题讨论】:

    标签: .net vb.net generics properties


    【解决方案1】:

    但我认为您最好使用泛型作为返回值。像这样的:

    Public Function PerformAnalysis(Of T)(analysisParameters As AnalysisParameters) As ActionResult(Of T)
        Dim actionResult As New ActionResult(Of T)
        Return actionResult
    End Function
    

    【讨论】:

    • 嗨,马特,感谢您的回复。我在上述声明中遇到了错误。 “Namespace.ActionResult(Of Namespace.TestAnalysisResult)”类型的值无法转换为“Namespace.ActionResult(Of Namespace.AnalysisResult)”。
    • 嗨,马特,再次感谢。你的建议对我有用。但我想知道原因/修复,上面的代码。你能帮我解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2012-09-08
    相关资源
    最近更新 更多