#.net #vb.net #generics #mapping
#.net #vb.net #дженерики #сопоставление
Вопрос:
У меня есть такой код:
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 не может использоваться как выражение. Приведенный выше код возвращает один объект, заполненный данными.
Ответ №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
Комментарии:
1. Да, это было так. Пожалуйста, измените typeUSN на I в строке 4 для будущих пользователей, которые могут просмотреть этот вопрос.