【问题标题】:Generics with Automapper - return single record带有 Automapper 的泛型 - 返回单个记录
【发布时间】:2014-08-21 19:43:30
【问题描述】:

我有一些这样的代码:

Public Function MakeDatareaderList(Of I As New)(ByVal objDR As DbDataReader) As List(Of I)
            Dim list As List(Of I)
            Mapper.CreateMap(Of DbDataReader, List(Of I))()
            list = Mapper.Map(Of SqlDataReader, List(Of I))(CType(objDR, SqlDataReader))
            Return list
        End Function

它按预期工作,即传入一个类型,然后返回该类型的列表。我可以这样做吗:

Public Function MakeDatareaderFirst(Of I As New)(ByVal objDR As DbDataReader) As I
            Mapper.CreateMap(Of IDataReader, IEnumerable(Of I))()
            I = Mapper.Map(Of IDataReader, IEnumerable(Of typeUSN))(objDR).First()
            Return I
        End Function

在上面的代码中,错误是:I cannot be used as an expression。上面的代码返回一个填充了数据的对象。

【问题讨论】:

    标签: .net vb.net generics mapping


    【解决方案1】:

    你还没有创建一个变量来分配mapper函数的结果给你吗?您正在尝试将其分配给类型 I

    这行不通:

    Public Function MakeDatareaderFirst(Of I As New)(ByVal objDR As DbDataReader) As I
        Dim instance as I
        Mapper.CreateMap(Of IDataReader, IEnumerable(Of I))()
        instance = Mapper.Map(Of IDataReader, IEnumerable(Of I))(objDR).First()
        Return instance
    End Function
    

    【讨论】:

    • 是的,就是这样。请在第 4 行将 typeUSN 更改为 I 以供未来可能查看此问题的用户使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 2018-12-08
    • 2021-12-25
    相关资源
    最近更新 更多