Вот код, который мы в итоге использовали:
Public Function GetDomainTableList(tableName As String) As IEnumerable(Of Object)
Dim table = CType(GetType(FECEntities).GetProperty(tableName).GetValue(DB, Nothing), IEnumerable(Of Object))
Dim dt = From r In table
Select r
Return dt.ToList()
End Function
Я изначально думал, что это не сработает для нас, так как я пытался проецировать каждый объект, возвращаемый в класс DomainTableItem
, которыйЯ написал.Но потом я понял, что конструктор SelectList
не особо заботился о типе объекта, который он принимает. Вы просто передаете строку, содержащую имя свойства, и она использует отражение для извлечения значения.
Таким образом, все работает отлично, и я избегал написания одного метода для каждой области / таблицы поиска.